一、复习
1、136. 只出现一次的数字
利用先排序的思想,再判断即可
2、167. 两数之和 II - 输入有序数组
哈希表
二、455. 分发饼干
今天找了一本刷题书,按照这个顺序去刷,应该会好一些
1、首先看了题解(下次不要了,先自己想一小会)。这个题是贪心算法:局部最优+局部不干扰,得出整体最优。
2、(1)先满足最容易吃饱的小孩子,并且使用最小的饼干;(2)因为涉及到大小关系,所以就先排序。
class Solution:
def findContentChildren(self, g: List[int], s: List[int]) -> int:
g.sort()
s.sort()
m = len(g)
n = len(s)
p=0
q=0
count = 0
while(p<m and q<n):
if g[p]<=s[q]:
count += 1
p+=1
q+=1
else:
q+=1
return count
3、对着书敲一下c++代码,顺便熟悉一下。
(1)v.begin()是v的起始地址
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(g.begin(),g.end());
sort(s.begin(),s.end());
int child=0, cookie = 0;
while(child<g.size() && cookie<s.size()){
if (g[child]<=s[cookie]) ++child;
++cookie;
}
return child;
}
};
(2)不知道比python快在了哪里,不过直接return child很好,而且这里面child和cookie的命名也很好。明天要自己敲c++!