Leetcode刷题第一天-贪心
455-分饼干
优先使用最小饼干满足最小胃口,一个娃只能分一个饼干T_T不能加
1 class Solution:
2 def findContentChildren(self, g: List[int], s: List[int]) -> int:
3 if not g or not s: return 0
4 g.sort()
5 s.sort()
6 i,j,re=0,0,0
7 while True:
8 if(i==len(g) or j==len(s)): break
9 if(s[j]>=g[i]):
10 re+=1
11 i+=1
12 j+=1
13 else:
14 j+=1
15 return re
135-分糖果
所有孩子糖果默认为1,从左往右找,右>左,右+1;再从右往左找,左>右,而且左孩糖<=右孩糖,左+1
1 class Solution:
2 def candy(self, ratings: List[int]) -> int:
3 if(not ratings): return 0
4 sweet=[1 for i in range(len(ratings))]
5 for i in range(len(ratings)-1):
6 if(ratings[i]<ratings[i+1]):
7 sweet[i+1]=sweet[i]+1
8 for i in range(len(ratings)-1,0,-1):
9 if(ratings[i]<ratings[i-1] and sweet[i]>=sweet[i-1]):
10 sweet[i-1]=sweet[i]+1
11 return sum(sweet)
435-无重复区间
所有区间有边界排序,留右边界最小值,才能使剩下的区间个数最大,依次检查区间的左边界是否大于最小右边界,小于,移除
1 class Solution:
2 def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:
3 if(not intervals): return 0
4 lens=len(intervals)
5 re=0
6 flage=[0 for i in range(lens)]
7 intervals.sort(key=lambda x:x[1])
8 for i in range(lens-1):
9 if(flage[i]): continue
10 flage[i]=1
11 for j in range(i,lens):
12 if(flage[j]): continue
13 if(intervals[j][0]<intervals[i][1]):
14 flage[j]=1
15 re+=1
16 return re
605-种花问题
当前是1,上下两个坑无论是啥都不能种花,当前是0,下一个是1,不能种,当前是0,上一个是1下一个是0,不能种,当前是0,上一个是0下一个是0,能种
1 class Solution:
2 def canPlaceFlowers(self, flowerbed: List[int], n: int) -> bool:
3 if(not flowerbed): return False
4 if(n>flowerbed.count(0)): return False
5 next_fl=True
6 nums=0
7 for i in range(len(flowerbed)-1):
8 if(flowerbed[i]==1): next_fl=False
9 else:
10 if(next_fl and not flowerbed[i+1]):
11 nums+=1
12 next_fl=False
13 else: next_fl=True
14 if(n<=nums): return True
15 if(next_fl and not flowerbed[len(flowerbed)-1]): nums+=1
16 if(n<=nums): return True
17 return False
452-最少箭
链接:452. 用最少数量的箭引爆气球 - 力扣(LeetCode)
1 class Solution:
2 def findMinArrowShots(self, points: List[List[int]]) -> int:
3 if(not points): return 0
4 points.sort(key=lambda x:x[1])
5 flage=[0 for i in range(len(points))]
6 nums=0
7 for i in range(len(points)):
8 if(flage[i]): continue
9 flage[i]=1
10 for j in range(i,len(points)):
11 if(flage[j]): continue
12 if(points[j][0]<=points[i][1]):
13 flage[j]=1
14 nums+=1
15 return nums
736-划分字母区间
找到字母起始位置和终止位置,范围内的字符和范围后的字符串对比,在后面字符串中,终止位置变更为当前字符的终止位置
1 class Solution:
2 def partitionLabels(self, s: str) -> List[int]:
3 if(not s): return [0]
4 new_strs=s[::-1]
5 re=[]
6 last,i,lens=0,0,len(s)
7 flage=True
8 first_id=s.find(s[0])
9 end_id=lens-new_strs.find(s[0])
10 while i<=lens:
11 if(end_id==lens):
12 re.append(lens-first_id)
13 break
14 for j in s[first_id:end_id]:
15 if(j in s[end_id:]):
16 end_id=lens-new_strs.find(j)
17 flage=False
18 break
19 if(flage):
20 re.append(end_id-first_id)
21 i=end_id
22 first_id=s.find(s[i])
23 end_id=lens-new_strs.find(s[i])
24 else:
25 i=end_id
26 flage=True
27 return re
122-买卖股票
链接:122. 买卖股票的最佳时机 II - 力扣(LeetCode)
收集每一天的最大利润
1 class Solution:
2 def maxProfit(self, prices: List[int]) -> int:
3 if(not prices): return 0
4 money,i=0,0
5 lens=len(prices)
6 for i in range(1,lens):
7 money+=max(0,prices[i]-prices[i-1])
8 return money
406-身高排序
链接:406. 根据身高重建队列 - 力扣(LeetCode)
先按照身高排序,保证高个前没有比它高的,相同高度,按照个数排,个数少的在后面
1 class Solution:
2 def reconstructQueue(self, people: List[List[int]]) -> List[List[int]]:
3 if(not people): return people
4 people.sort(key=lambda x:[x[0],-x[1]],reverse=True)
5 lens=len(people)
6 re=[]
7 for p in people:
8 re.insert(p[1],p)
9 return re
Leetcode刷题第一天-贪心的更多相关文章
- LeetCode刷题第一天
1 . 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用 ...
- leetcode刷题第一日<两数和问题>
开始就用到了c++的哈希表是真的恶心,首先学习一波基础知识 https://blog.csdn.net/u010025211/article/details/46653519 下面放下大佬的代码 cl ...
- C#LeetCode刷题-贪心算法
贪心算法篇 # 题名 刷题 通过率 难度 44 通配符匹配 17.8% 困难 45 跳跃游戏 II 25.5% 困难 55 跳跃游戏 30.6% 中等 122 买卖股票的最佳时机 II C ...
- LeetCode刷题专栏第一篇--思维导图&时间安排
昨天是元宵节,过完元宵节相当于这个年正式过完了.不知道大家有没有投入继续投入紧张的学习工作中.年前我想开一个Leetcode刷题专栏,于是发了一个投票想了解大家的需求征集意见.投票于2019年2月1日 ...
- leetcode刷题--两数之和(简单)
一.序言 第一次刷leetcode的题,之前从来没有刷题然后去面试的概念,直到临近秋招,或许是秋招结束的时候才有这个意识,原来面试是需要刷题的,面试问的问题都是千篇一律的,只要刷够了题就差不多了,当然 ...
- leetcode刷题记录--js
leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...
- LeetCode刷题总结之双指针法
Leetcode刷题总结 目前已经刷了50道题,从零开始刷题学到了很多精妙的解法和深刻的思想,因此想按方法对写过的题做一个总结 双指针法 双指针法有时也叫快慢指针,在数组里是用两个整型值代表下标,在链 ...
- LeetCode刷题总结-数组篇(上)
数组是算法中最常用的一种数据结构,也是面试中最常考的考点.在LeetCode题库中,标记为数组类型的习题到目前为止,已累计到了202题.然而,这202道习题并不是每道题只标记为数组一个考点,大部分习题 ...
- LeetCode刷题总结-数组篇(中)
本文接着上一篇文章<LeetCode刷题总结-数组篇(上)>,继续讲第二个常考问题:矩阵问题. 矩阵也可以称为二维数组.在LeetCode相关习题中,作者总结发现主要考点有:矩阵元素的遍历 ...
- LeetCode刷题总结-数组篇(下)
本期讲O(n)类型问题,共14题.3道简单题,9道中等题,2道困难题.数组篇共归纳总结了50题,本篇是数组篇的最后一篇.其他三个篇章可参考: LeetCode刷题总结-数组篇(上),子数组问题(共17 ...
随机推荐
- 如何做一次完美的 ABTest?
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/mO5MdwG7apD6RzDhFwZhog作者:DuZhimin 越来越多的公司都在尝试 AB ...
- 源码深度解析 Handler 机制及应用
本文以源码分析+实际应用的形式,详细讲解了 Handler 机制的原理,以及在开发中的使用场景和要注意的地方. 一.基本原理回顾 在 Android 开发中,Handler及相关衍生类的应用经常用到, ...
- 5G“乍到”,图扑带你了解室内定位可视化的实现与新突破
前言 现代工业化的推进在极大加速现代化进程的同时也带来的相应的安全隐患,在传统的可视化监控领域,一般都是基于 Web SCADA 的前端技术来实现 2D 可视化监控,本系统采用 Hightopo 的 ...
- hbulider 运行微信开发者工具 Enable IDE Service (y/N) [27D[27C
问题:hbulider 运行微信开发者工具 出现如下页面,没有输入y的交互界面 解决办法:先安装微信开发者工具,然后打开微信开发者工具 再次运行:
- P4837
日了啊,这道题每个输入中有多组输入,每处理完一组输入需要清空STL的stack类对象的啊.要是自己写的栈或许能想起来重新top=1,但是这用的STL现成的stack,就忘了while(!sk.empt ...
- Flutter 3 发布了(文末推荐一个免费的在线Flutter学习教程)
翻译自 Tim Sneath 2022年5月12日的文章 <Introducing Flutter 3> 作者 : Tim Sneath 翻译 : 沙漠尽头的狼(谷歌翻译加持) 链接 : ...
- org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 2
1.报错 在运行SpringBoot项目时遇到报错: 17:44:47.558 [main] ERROR org.springframework.boot.SpringApplication -- A ...
- http-自签证书
1. 背景 证书需要向云服务提供商购买,是需要付费,但用在应用开发场景是不合适的,需要开发者自己自签证书进行测试 2. 工具包 Cygwin a large collection of GNU and ...
- [转帖]一图胜千言 -- SQL Server 基准测试
https://blog.51cto.com/ultrasql/2130487 文章标签基准测试文章分类SQL Server数据库阅读数1116
- iftop的学习与使用
iftop的学习与使用 背景 前段时间一直进行netperf 等网络性能验证工具的学习与使用. 监控很多时候采用了 node-exporter + prometheus + grafana来进行观察 ...