leetcode热门100题贪心算法python
时间: 2025-03-22 20:10:45 浏览: 40
### LeetCode Top 100 贪心算法题目 Python 实现
贪心算法是一种通过局部最优解来达到全局最优解的方法,在许多实际问题中有广泛应用。以下是基于常见需求整理的一系列与贪心算法相关的热门问题及其对应的 Python 解法。
#### 1. **分发饼干 (Assign Cookies)**
给定饥饿度不同的孩子和大小不一的饼干,分配饼干使尽可能多的孩子感到满足[^1]。
```python
def findContentChildren(g, s):
g.sort()
s.sort()
i, j = 0, 0
while i < len(g) and j < len(s):
if s[j] >= g[i]:
i += 1
j += 1
return i
```
---
#### 2. **跳跃游戏 (Jump Game II)**
计算从数组的第一个位置到达最后一个位置所需的最少步数[^4]。
```python
def jump(nums):
n = len(nums)
max_pos, end, steps = 0, 0, 0
for i in range(n - 1):
max_pos = max(max_pos, i + nums[i])
if i == end:
end = max_pos
steps += 1
return steps
```
---
#### 3. **区间调度 (Non-overlapping Intervals)**
移除最少数目的区间使其互不重叠[^2]。
```python
def eraseOverlapIntervals(intervals):
if not intervals:
return 0
intervals.sort(key=lambda x: x[1]) # 按结束时间排序
count = 1
end = intervals[0][1]
for interval in intervals[1:]:
if interval[0] >= end:
count += 1
end = interval[1]
return len(intervals) - count
```
---
#### 4. **拼车问题 (Car Pooling)**
判断一辆容量固定的汽车能否接送所有乘客而不超载。
```python
def carPooling(trips, capacity):
events = []
for num, start, end in trips:
events.append((start, num))
events.append((end, -num))
events.sort() # 时间顺序排列
current_load = 0
for _, passengers in events:
current_load += passengers
if current_load > capacity:
return False
return True
```
---
#### 5. **最大利润 (Maximum Profit in Job Scheduling)**
安排工作以获得最大的总利润。
```python
def jobScheduling(startTime, endTime, profit):
jobs = sorted(zip(endTime, startTime, profit)) # 按结束时间排序
dp = [jobs[0][2]]
for i in range(1, len(jobs)):
curr_profit = jobs[i][2]
l = bisect_right([job[0] for job in jobs], jobs[i][1]) - 1
if l != -1:
curr_profit += dp[l]
dp.append(max(curr_profit, dp[-1]))
return dp[-1]
```
---
#### 工具推荐
对于上述解决方案的实际编写与调试,建议使用高效的开发工具如 PyCharm 或 VSCode 来提升效率[^3]。
---
### 总结
以上展示了部分经典贪心算法问题的 Python 实现方案。每种方法均经过优化设计,能够有效解决特定场景下的复杂问题。
阅读全文
相关推荐


















