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 ...
随机推荐
- 涂色游戏Flood-it!(IDA star算法) - HDU 4127
做题之前,可以先到下面这个网站玩一会游戏: https://unixpapa.com/floodit/?sz=14&nc=6 游戏开发里面,比较常用的一个搜索算法是寻路算法,寻路算法里面用的最 ...
- springboot项目全局异常处理@ControllerAdvice(方式二)
SpringMVC 中 @ControllerAdvice 注解的三种使用场景! @ControllerAdvice ,很多初学者可能都没有听说过这个注解,实际上,这是一个非常有用的注解,顾名思义 ...
- jdk(jvm)调式工具
JConsole 可视化工具介绍一. JConsole介绍1.1 JConsole描述Jconsole (Java Monitoring and Management Console),一种基于JMX ...
- eyebeam高级设置
概述 VOIP测试过程中,经常会用到各种各样的SIP终端,eyebeam是其中最常见的一种. 在eyebeam的配置option中,只有少量的配置选项,有些特殊的设置无法配置. 比如DTMF码的发码形 ...
- C# 几种常见数据结构(数组、链表、Hash表)
一.内存上连续存储,节约空间,可以索引访问,读取快,增删慢 Array: 在内存上连续分配的,而且元素类型是一样的,可以坐标访问;读取快--增删慢,长度不变 { //Array:在内存上连续分配的,而 ...
- Ribbon 负载均衡源码解读
转载请注明出处: 1.什么是Ribbon 是 Netflix 发布的一个负载均衡器,有助于控制 HTTP 和 TCP客户端行为.在 SpringCloud 中, nacos一般配合Ribbon进行使用 ...
- Redis 缓存与数据库数据不一致问题
Redis缓存与数据库数据不一致问题是指在使用Redis作为缓存系统时,由于缓存和数据库之间的操作没有同步或处理不当,导致缓存中的数据与数据库中的数据不同步,产生数据不一致的情况. 现象: 数据库更新 ...
- C:\Keil_v5\ARM\ARMCC\include\stdint.h contains an incorrect path.
1.问题 在使用Keil uvison5打开例程代码进行学习时,发现部分.h文件无法读取 2.解决方法 1.找到如图的设置按钮(小锤子) 2.根据自己所用的是C/C++还是ARM选择(我这里是C/C+ ...
- 2023第十四届极客大挑战 — RE WP
RE方向出自:队友. Shiftjmp 去花后按p然后再反编译 最后flag为SYC{W3lc0me_tO_th3_r3veR5e_w0r1d~} 点击就送的逆向题 gcc 1.s -o 1` 生成e ...
- SpringMVC01——回顾MVC
1.1什么是MVC MVC是模型(Model).视图(View).控制器(Controller)的简写,是一种软件设计规范. 是将业务逻辑.数据.显示分离的方法来组织代码. MVC主要作用是降低了视图 ...