455-分饼干

链接:455. 分发饼干 - 力扣(LeetCode)

优先使用最小饼干满足最小胃口,一个娃只能分一个饼干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-分糖果

链接:135. 分发糖果 - 力扣(LeetCode)

所有孩子糖果默认为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-无重复区间

链接:435. 无重叠区间 - 力扣(LeetCode)

所有区间有边界排序,留右边界最小值,才能使剩下的区间个数最大,依次检查区间的左边界是否大于最小右边界,小于,移除

 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-种花问题

链接:605. 种花问题 - 力扣(LeetCode)

当前是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-划分字母区间

链接:763. 划分字母区间 - 力扣(LeetCode)

找到字母起始位置和终止位置,范围内的字符和范围后的字符串对比,在后面字符串中,终止位置变更为当前字符的终止位置

 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刷题第一天-贪心的更多相关文章

  1. LeetCode刷题第一天

    1 . 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用 ...

  2. leetcode刷题第一日<两数和问题>

    开始就用到了c++的哈希表是真的恶心,首先学习一波基础知识 https://blog.csdn.net/u010025211/article/details/46653519 下面放下大佬的代码 cl ...

  3. C#LeetCode刷题-贪心算法

    贪心算法篇 # 题名 刷题 通过率 难度 44 通配符匹配   17.8% 困难 45 跳跃游戏 II   25.5% 困难 55 跳跃游戏   30.6% 中等 122 买卖股票的最佳时机 II C ...

  4. LeetCode刷题专栏第一篇--思维导图&时间安排

    昨天是元宵节,过完元宵节相当于这个年正式过完了.不知道大家有没有投入继续投入紧张的学习工作中.年前我想开一个Leetcode刷题专栏,于是发了一个投票想了解大家的需求征集意见.投票于2019年2月1日 ...

  5. leetcode刷题--两数之和(简单)

    一.序言 第一次刷leetcode的题,之前从来没有刷题然后去面试的概念,直到临近秋招,或许是秋招结束的时候才有这个意识,原来面试是需要刷题的,面试问的问题都是千篇一律的,只要刷够了题就差不多了,当然 ...

  6. leetcode刷题记录--js

    leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...

  7. LeetCode刷题总结之双指针法

    Leetcode刷题总结 目前已经刷了50道题,从零开始刷题学到了很多精妙的解法和深刻的思想,因此想按方法对写过的题做一个总结 双指针法 双指针法有时也叫快慢指针,在数组里是用两个整型值代表下标,在链 ...

  8. LeetCode刷题总结-数组篇(上)

    数组是算法中最常用的一种数据结构,也是面试中最常考的考点.在LeetCode题库中,标记为数组类型的习题到目前为止,已累计到了202题.然而,这202道习题并不是每道题只标记为数组一个考点,大部分习题 ...

  9. LeetCode刷题总结-数组篇(中)

    本文接着上一篇文章<LeetCode刷题总结-数组篇(上)>,继续讲第二个常考问题:矩阵问题. 矩阵也可以称为二维数组.在LeetCode相关习题中,作者总结发现主要考点有:矩阵元素的遍历 ...

  10. LeetCode刷题总结-数组篇(下)

    本期讲O(n)类型问题,共14题.3道简单题,9道中等题,2道困难题.数组篇共归纳总结了50题,本篇是数组篇的最后一篇.其他三个篇章可参考: LeetCode刷题总结-数组篇(上),子数组问题(共17 ...

随机推荐

  1. Codeforces Round #645 (Div. 2)

    这一次的Div.2 大多数学思维.. A. Park Lightingtime https://codeforces.com/contest/1358/problem/A 题意:给一个n,m为边的矩形 ...

  2. 题解 [HDU6746] Civilization(贪心+模拟)

    来源:2020 年百度之星·程序设计大赛 - 初赛一 一道贪心 + 细节模拟题 题意很简单,这里不详细写了 观察题目,\(n\) 只有 500 ,可以 \(n \times n\) 枚举每个位置作为起 ...

  3. springboot线程池的使用方式2

    一.简单介绍 方式1:Executors.newCachedThreadPool线程池.Executors有7种不同的线程池. private static final ExecutorService ...

  4. vue学习笔记 十五、组件挂载过程及query方式带参数的页面跳转

    系列导航 vue学习笔记 一.环境搭建 vue学习笔记 二.环境搭建+项目创建 vue学习笔记 三.文件和目录结构 vue学习笔记 四.定义组件(组件基本结构) vue学习笔记 五.创建子组件实例 v ...

  5. 如何实现纯网页语音视频聊天和桌面分享?(附源码,PC版+手机版)

    在网页里实现文字聊天是比较容易的,但若要实现视频聊天,就比较麻烦了.本文将实现一个纯网页版的视频聊天和桌面分享的Demo,可直接在浏览器中运行,不需要安装任何插件. 一. 主要功能及支持平台 1.本D ...

  6. AHB-SRAMC Design-02

    AHB-SRAMC Design SRAMC(另外一种代码风格)解析 SRAM集成,顶层模块尽量不要写交互逻辑 module ahb_slave_if( input hclk, input hrest ...

  7. python环境 anaconda安装

    官网: https://www.anaconda.com/distribution/#macos 国内镜像: https://mirrors.tuna.tsinghua.edu.cn/anaconda ...

  8. [转帖][MySQL 8.2.0] 从参数变化解读 MySQL 8.2.0 发版说明

    https://www.mryunwei.com/482476.html 日前,MySQL 8.2.0 创新版本已正式上线,并提供安装包下载,但 docker 镜像尚未更新. 在 MySQL 8.1. ...

  9. Chrony 的学习与使用

    Chrony 的学习与使用 背景 之前捯饬 ntp 发现很麻烦, 经常容易弄错了. 昨天处理文件精确时间时 想到了时间同步. 发现只有自己总结的ntpdate 但是还没有 chronyd相关的总结 本 ...

  10. tidb备份恢复的方式方法

    tidb备份恢复的方式方法 摘要 可以单独每个数据库实例进行备份,但是这种机制实在是太慢了. 网上查资料发现可以使用 tiup br 的方式进行备份. 但是大部分文档都比较陈旧, 官网上面又比较贴心的 ...