LeetCode 每日一題 2025/7/7-2025/7/13

記錄了初步解題思路 以及本地實現代碼;并不一定為最優 也希望大家能一起探討 一起進步


目錄

      • 7/7 1353. 最多可以參加的會議數目
      • 7/8 1751. 最多可以參加的會議數目 II
      • 7/9 3439. 重新安排會議得到最多空余時間 I
      • 7/10 3440. 重新安排會議得到最多空余時間 II
      • 7/11 3169. 無需開會的工作日
      • 7/12 1900. 最佳運動員的比拼回合
      • 7/13 2410. 運動員和訓練師的最大匹配數


7/7 1353. 最多可以參加的會議數目

將會議按照開始時間從小到大分組 在組內盡量選擇結束日期早的選擇

def maxEvents(events):""":type events: List[List[int]]:rtype: int"""import heapqmx=max(e[1] for e in events)grp=[[] for _ in range(mx+1)]for e in events:grp[e[0]].append(e[1])ans=0h=[]for i,g in enumerate(grp):while h and h[0]<i:heapq.heappop(h)for end in g:heapq.heappush(h, end)if h:ans+=1heapq.heappop(h)return ans

7/8 1751. 最多可以參加的會議數目 II

根據結束時間先后排序
dp[i][j]表示前i個會議選擇j個最大價值和
i不參加
dp[i][j]=dp[i-1][j]
i參加 假設在[1,starti-1]內有p個會議
dp[i][j]=dp[p][j-1]+value
二分查找結束時間早于starti的會議數目

def maxValue(events, k):""":type events: List[List[int]]:type k: int:rtype: int"""import bisectevents.sort(key=lambda x:x[1])n=len(events)dp=[[0]*(k+1) for _ in range(n+1)]for i,(start,end,v) in enumerate(events):p=bisect.bisect_left(events, start,hi=n-1,key=lambda x:x[1])for j in range(1,k+1):dp[i+1][j]=max(dp[i][j],dp[p][j-1]+events[i][2])return dp[n][k]

7/9 3439. 重新安排會議得到最多空余時間 I

轉換為合并相鄰的k+1個空余時間塊
滑動長度為k+1的窗口

def maxFreeTime(eventTime, k, startTime, endTime):""":type eventTime: int:type k: int:type startTime: List[int]:type endTime: List[int]:rtype: int"""n=len(startTime)free=[0]*(n+1)free[0]=startTime[0]free[-1]=eventTime-endTime[-1]for i in range(1,n):free[i]=startTime[i]-endTime[i-1]ans=0cur=0for i,f in enumerate(free):cur+=fif i<k:continueans=max(ans,cur)cur-=free[i-k]return ans

7/10 3440. 重新安排會議得到最多空余時間 II

只能移動一次會議 就是將相鄰的兩個空余時間合并
最理想的情況 兩個空余時間中間的會議可以安排到另一個空余時間內
得到結果就是兩個空余時間相加再加上中間的會議時間
否則只能是兩個空余時間相加
為了判斷是否可以放入會議 記錄前三大的空位

def maxFreeTime(eventTime, startTime, endTime):""":type eventTime: int:type startTime: List[int]:type endTime: List[int]:rtype: int"""n=len(startTime)def find(i):if i==0:return startTime[0]if i==n:return eventTime-endTime[-1]return startTime[i]-endTime[i-1]a,b,c=0,-1,-1for i in range(1,n+1):v=find(i)if v>find(a):a,b,c=i,a,belif b<0 or v>find(b):b,c=i,belif c<0 or v>find(c):c=ians=0for i,(s,e) in enumerate(zip(startTime,endTime)):v=e-sif i!=a and i+1!=a and v<=find(a) or (i!=b and i+1!=b and v<=find(b)) or v<=find(c):ans=max(ans,find(i)+v+find(i+1))else:ans=max(ans,find(i)+find(i+1))return ans

7/11 3169. 無需開會的工作日

將開會起始日期從小到大排序 合并重疊的會議
工作日減去開會的天數

def countDays(days, meetings):""":type days: int:type meetings: List[List[int]]:rtype: int"""meetings.sort()l,r=1,0for m in meetings:if m[0]>r:days-=r-l+1l=m[0]r=max(r,m[1])days-=r-l+1return days

7/12 1900. 最佳運動員的比拼回合

參考:https://leetcode.cn/problems/the-earliest-and-latest-rounds-where-players-compete/solutions/825860/dpmei-ju-xia-yi-lun-liang-ming-xuan-shou-okfu/?envType=daily-question&envId=2025-07-12

def earliestAndLatest(n, firstPlayer, secondPlayer):""":type n: int:type firstPlayer: int:type secondPlayer: int:rtype: List[int]"""if firstPlayer + secondPlayer == n + 1:return [1, 1]if firstPlayer + secondPlayer > n + 1:firstPlayer, secondPlayer = n + 1 - secondPlayer, n + 1 - firstPlayerdef calc_earliest_rounds(n):res = 1if firstPlayer + secondPlayer <= (n + 1) // 2:while firstPlayer + secondPlayer <= (n + 1) // 2:res += 1n = (n + 1) // 2if secondPlayer - firstPlayer > 1:return res + 1if secondPlayer - firstPlayer == 1:res += 1n = (n + 1) // 2while n % 2 > 0:res += 1n = (n + 1) // 2return resif secondPlayer <= (n + 1) // 2:return res + 1if secondPlayer - firstPlayer == 2:res += 1n = (n + 1) // 2while n % 2 > 0:res += 1n = (n + 1) // 2return resif firstPlayer % 2 == 0 and firstPlayer + secondPlayer == n:res += 1return res + 1earliest = calc_earliest_rounds(n)latest = min((n - 1).bit_length(), n + 1 - secondPlayer)return [earliest, latest]

7/13 2410. 運動員和訓練師的最大匹配數

運動員和訓練師從大到小排列 雙指針依次比較
如果當前最大訓練師無法訓練 當前運動員必定訓練不了 考慮下一個運動員

def matchPlayersAndTrainers(players, trainers):""":type players: List[int]:type trainers: List[int]:rtype: int"""players.sort(reverse=True)trainers.sort(reverse=True)i,j=0,0ans=0while i<len(players) and j<len(trainers):if players[i]<=trainers[j]:ans+=1i+=1j+=1else:i+=1return ans

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/89172.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/89172.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/89172.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Bash常見條件語句和循環語句

以下是 Bash 中常用的條件語句和循環語句分類及語法說明&#xff0c;附帶典型用例&#xff1a;一、條件語句 1. if 語句 作用&#xff1a;根據條件執行不同代碼塊 語法&#xff1a; if [ 條件 ]; then# 條件為真時執行 elif [ 其他條件 ]; then# 其他條件為真時執行 else# 所有…

uni-app 選擇國家區號

uni-app選擇國家區號組件 hy-countryPicker 我們在做登錄注冊功能的時候&#xff0c;可能會遇到選擇區號來使用不同國家手機號來登錄或者注冊的功能。這里我就介紹下我這個uni-app中使用的選擇區號的組件&#xff0c;包含不同國家國旗圖標。 效果圖 別的不說&#xff0c;先來…

客戶端主機宕機,服務端如何處理 TCP 連接?詳解

文章目錄一、客戶端主機宕機后迅速重啟1、服務端有數據發送2、服務端開啟「保活」機制3、服務端既沒有數據發送&#xff0c;也沒有開啟「保活」機制二、客戶端主機宕機后一直沒有重啟1、服務端有數據發送2、服務端開啟「保活」機制3、服務端既沒有數據發送&#xff0c;也沒有開…

《大數據技術原理與應用》實驗報告五 熟悉 Hive 的基本操作

目 錄 一、實驗目的 二、實驗環境 三、數據集 四、實驗內容與完成情況 4.1 創建一個內部表 stocks&#xff0c;字段分隔符為英文逗號&#xff0c;表結構下所示。 4.2 創建一個外部分區表 dividends&#xff08;分區字段為 exchange 和symbol&#xff09;&#xff0c;字段…

【橘子分布式】Thrift RPC(編程篇)

一、簡介 之前我們研究了一下thrift的一些知識&#xff0c;我們知道他是一個rpc框架&#xff0c;他作為rpc自然是提供了客戶端到服務端的訪問以及兩端數據傳輸的消息序列化&#xff0c;消息的協議解析和傳輸&#xff0c;所以我們今天就來了解一下他是如何實現這些功能&#xff…

清理C盤--辦法

c盤經常爆紅1、命令行2、屬性3、臨時文件

Java-71 深入淺出 RPC Dubbo 上手 父工程配置編寫 附詳細POM與代碼

點一下關注吧&#xff01;&#xff01;&#xff01;非常感謝&#xff01;&#xff01;持續更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持續更新中&#xff01;&#xff08;長期更新&#xff09; AI煉丹日志-29 - 字節跳動 DeerFlow 深度研究框斜體樣式架 私有…

創客匠人:創始人 IP 打造的內核,藏在有效的精神成長里

當創始人 IP 成為企業增長的重要引擎&#xff0c;許多人急于尋找 “爆款公式”&#xff0c;卻忽略了一個更本質的問題&#xff1a;IP 的生命力&#xff0c;終究源于創始人的精神成長。創客匠人在深耕知識付費賽道的過程中&#xff0c;見證了無數案例&#xff1a;那些能持續實現…

GPT和MBR分區

GPT&#xff08;GUID分區表&#xff09;和MBR&#xff08;主引導記錄&#xff09;是兩種不同的磁盤分區表格式&#xff0c;用于定義硬盤上分區的布局、位置及啟動信息&#xff0c;二者在設計、功能和適用場景上有顯著差異。以下從多個維度詳細對比&#xff1a; 一、核心定義與起…

c#進階之數據結構(字符串篇)----String

1、String介紹首先我們得明白&#xff0c;string和String代表的實際上是同一個類型&#xff0c;string是C#中的關鍵字&#xff0c;代表String類型&#xff0c;因此我們直接來學習String類型。從官方的底層實現代碼可以看出&#xff0c;當前String類型實際上就是一個Char類型的聚…

快速排序遞歸和非遞歸方法的簡單介紹

基本思想為&#xff1a;任取待排序元素序列中 的某元素作為基準值&#xff0c;按照該排序碼將待排序集合分割成兩子序列&#xff0c;左子序列中所有元素均小于基準值&#xff0c;右 子序列中所有元素均大于基準值&#xff0c;然后最左右子序列重復該過程&#xff0c;直到所有元…

從零開始的云計算生活——第三十二天,四面楚歌,HAProxy負載均衡

目錄 一.HAProxy簡介 二.HAProxy特點和優點&#xff1a; 三.HAProxy保持會話的三種解決方法 四.HAProxy的balance 8種負載均衡算法 1&#xff09;RR&#xff08;Round Robin&#xff09; 2&#xff09;LC&#xff08;Least Connections&#xff09; 3&#xff09;SH&am…

策略模式及優化

策略模式&#xff08;Strategy Pattern&#xff09;是一種行為設計模式&#xff0c;其核心思想是將算法的定義與使用分離&#xff0c;使算法可以獨立于客戶端進行變化。它通過定義一系列算法&#xff0c;將每個算法封裝到獨立的類中&#xff0c;并使它們可以互相替換&#xff0…

微信小程序開發-桌面端和移動端UI表現不一致問題記錄

桌面端和移動端UI表現不一致零、引擎說明一、樣式不同1、text 單行&#xff1a;1.1 空格開發者工具不展示&#xff0c;手機/PC端正常1.2 正常展示省略號&#xff0c;需要2、點擊按鈕z-index: -1。webview - 桌面端不行&#xff0c; skyline - 移動端可以&#xff1b;3、其他說明…

極限狀態下函數開根號的計算理解(含示意圖)

遇到一個挺有意思的題做個記錄&#xff1a; 求曲線y (x21)(x2?1)0.5\frac{\left(x^{2}1\right)}{\left(x^{2}-1\right)^{0.5}}(x2?1)0.5(x21)?漸近線的條數 比較明顯的x 1是無定義點。但是在求極限的時候發現1和1-得到的極限值似乎不一樣。似乎是1是趨向于∞&#xff0c;1…

C++——模版(函數模版和類模版)

C 模板&#xff08;Templates&#xff09;完整介紹模板是 C 中一種強大的泛型編程機制&#xff0c;允許開發者編寫與類型無關的代碼&#xff0c;從而提高代碼的復用性和靈活性。通過模板&#xff0c;可以避免為不同數據類型重復編寫相似的函數或類&#xff0c;實現真正的代碼復…

Python之cv2:cv2(OpenCV,opencv-python)庫pip下載超時、下載失敗、無法下載的解決方案大全

Python之cv2&#xff1a;cv2(OpenCV&#xff0c;opencv-python)庫pip下載超時、下載失敗、無法下載的解決方案大全 在學習和使用 OpenCV&#xff08;Python 包名&#xff1a;opencv-python 或簡稱 cv2&#xff09;的過程中&#xff0c;很多初學者常常會遇到通過 pip install o…

asyncio 與 uvloop

事件循環 事件循環 協調所有協程執行的中央調度器&#xff0c;它通過非阻塞機制&#xff0c;實現并發執行多個異步任務。 事件循環是 異步編程的核心機制&#xff0c;用一句話概括就是&#xff1a; 事件循環不斷檢查任務隊列&#xff0c;一旦某個異步任務完成&#xff0c;它…

一文讀懂循環神經網絡(RNN)—語言模型+n元語法(1)

目錄 什么是語言模型&#xff1f; 語言模型的核心目的 一.量化文本的合理性 二.支持下游 NLP 任務 三. 語義和上下文依賴 一元語法、二元語法和三元語法詳解 核心概念&#xff1a;n-gram 模型 1. 一元語法&#xff08;Unigram&#xff09; 2. 二元語法&#xff08;Bigram…

DirectX12(D3D12)基礎教程九 間接繪制

在學習directx12 microsoft提供了很多示例&#xff0c;有簡單的也有復雜,下載網址&#xff1a;https://github.com/microsoft/DirectX-Graphics-Samples 本章對D3D12ExecuteIndirect 示例做了簡化&#xff0c;只保留間接繪制部分&#xff0c;刪除了計算著色器部分。 間接繪制…