LeetCode 455.分发饼干
题目链接:
解题思路:
从孩子小到大,找到最小能满足孩子的饼干,之后看最多能满足几个孩子。
代码:
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
int count = 0;
map<int,int>map_s;
for(int i = 0;i<s.size();i++){
map_s[s[i]]++;
}
sort(g.begin(),g.end());
for(int i=0;i<g.size();i++){
for(auto it = map_s.begin();it!=map_s.end();it++){
if(it->first>=g[i]&&it->second>0){
it->second--;
count++;
break;
}
}
}
return count;
}
};
LeetCode 376.摆动序列
题目链接:
解题思路:
先将一个节点和两个节点的特殊情况列举出来,之后分三种情况1.有摆动2.有摆动但中间是平的3.持续增,但中间为平的三种。
代码:
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
int size = nums.size();
if(size==1) return 1;
else if(size==2){
if(nums[0]!=nums[1]) return 2;
else return 1;
}
int prediff = 0,curdiff = 0;
int count = 1;
for(int i=1;i<size;i++){
curdiff = nums[i]-nums[i-1];
if((curdiff>0&&prediff<=0)||(curdiff<0&&prediff>=0)){
count++;
prediff = curdiff;
}
}
return count;
}
};
LeetCode 53.最大子序列和
题目链接:
解题思路:
用result记录当前最大结果值,如果前面的结果值小于零,则起不到递增的作用,则不要前面的,将前面的结果赋值为0.
代码:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int count = 0;
int result = INT_MIN;
for(int i=0;i<nums.size();i++){
count+=nums[i];
if(count>result) result = count;
if(count<0) count = 0;
}
return result;
}
};