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 ...
随机推荐
- 2016年第七届 蓝桥杯B组C/C++ 决赛题解
1.一步之遥 从昏迷中醒来,小明发现自己被关在X星球的废矿车里. 矿车停在平直的废弃的轨道上. 他的面前是两个按钮,分别写着"F"和"B". 小明突然记起来,这 ...
- 【每日一题】14.Accumulation Degree(树形DP + 二次扫描)
补题链接:Here 一个树形水系,有 \(n\) 个结点,根结点称为源点,叶子结点称为汇点,每条边都有水量限制$C(x,y) \((\)x,y$ 为这条边的两个端点),源点单位时间流出的水量称为整个水 ...
- vue setup响应式变量
setup响应式变量 一.非响应式变量 1 效果 开发中发现setup()中的变量居然不是响应式的,值得内容变成1了但是页面上还是0 2.源码 二.响应式变量 1.效果 使用ref()可以声明响应式的 ...
- C#使用迭代器显示公交车站点
public static IList<object> items = new List<object>();//定义一个泛型对象,用于存储对象 /// <summary ...
- [译] kubernetes:kube-scheduler 调度器代码结构概述
本文翻译自 https://github.com/kubernetes/community/blob/master/contributors/devel/sig-scheduling/scheduli ...
- @RequestParam与@RequestBody使用对比
转载请注明出处: @RequestParam 用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容. (Http协议中,如果不指定Con ...
- 在Windows 版的Chrome中切换标签页
按住Ctrl+tab键之后使用page up/ page down键左右移动!
- CSS : div 高度为0的三种情况
1, css 样式没正确绑定 ( 也就是没有设置高度 ) 2, 子元素 浮动 ( float ) 3, 子元素 绝对定位 ( position : absolute )
- [转帖]tidb数据库5.4.3和6.5.3版本性能测试对比
https://tidb.net/blog/5454621f 一.测试需求: 基于历史原因,我们的业务数据库一直使用5.4.3,最近由于研发提出需求:需要升级到6.5.3版本,基于版本不同,需要做 ...
- [转帖]Centos7 nginx访问日志文件割接
一.yum安装nginx 二.各文件路径( /etc/nginx/nginx.conf) 1.访问日志路径:access_log /var/log/nginx/access.log main; 2.p ...