455.分发饼干
独立做出
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
//g child s biscuit
sort(g.rbegin(),g.rend());
sort(s.rbegin(),s.rend());
//child index
int BSindex = 0;
int CHindex = 0;
while (BSindex != s.size() && CHindex != g.size()) {
if (s[BSindex] >= g[CHindex]) {
++BSindex;
++CHindex;
} else {
++CHindex;
}
}
return BSindex;
}
};
376. 摆动序列
- 语言层面不难,要把逻辑理清楚
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
if(nums.size()<=1) return nums.size();
int prediff = 0;
int curdiff = 0;
int result = 1;
for (int i = 0; i < nums.size() -1; ++i) {
curdiff = nums[i+1] - nums[i];
if ((prediff<=0 && curdiff>0)
||(prediff>=0 && curdiff<0)) {
prediff = curdiff;
++result;
}
}
return result;
}
};
53. 最大子序和
- 有时候纸上模拟下思路就来了
- 目前的和为正,对后面就是增大累计效果,目前和为负,对后面就是减小效果,甚至不需要下个元素来判断,算法往往就是抓住了本质规律
class Solution {
public:
int result = INT_MIN;
int tmp = 0;
int maxSubArray(vector<int>& nums) {
for (int i = 0; i < nums.size(); ++i) {
tmp += nums[i];
result = result < tmp ? tmp : result;
tmp = tmp <=0 ? 0 : tmp;
}
return result;
}
};