目录
1、455. 分发饼干
贪心
class Solution {
public int findContentChildren(int[] g, int[] s) {
if(s.length == 0) return 0;
Arrays.sort(g);
Arrays.sort(s);
int res = 0;
int g_index = 0;
for(int ss : s)
{
if(g_index >= g.length) break;
if(g[g_index] <= ss)
{
++res;
++g_index;
}
}
return res;
}
}
2、376. 摆动序列
简单,注意一些特殊情况
class Solution {
public int wiggleMaxLength(int[] nums) {
if(nums.length <= 1) return nums.length;
if(nums.length == 2 && nums[0] == nums[1]) return 1;
int pre = nums[1] - nums[0];
int cur;
int res = nums.length;
for(int i = 2; i < nums.length; ++i)
{
cur = nums[i] - nums[i - 1];
if(pre * cur < 0)
{
pre = cur;
}
else
{
--res;
pre += cur;
}
}
if(pre == 0) --res;
return res;
}
}
3、53. 最大子数组和
连续和为负数时重新开始
class Solution {
public int maxSubArray(int[] nums) {
int res = Integer.MIN_VALUE;
int tmp = 0;
for(int i = 0; i < nums.length; ++i)
{
tmp += nums[i];
if(tmp > res) res = tmp;
if(tmp < 0) tmp = 0;
}
return res;
}
}
4、122. 买卖股票的最佳时机 II
累加每天的正利润
class Solution {
public int maxProfit(int[] prices) {
if(prices.length <= 1) return 0;
int res = 0;
for(int i = 1; i < prices.length; ++i)
{
int tmp = prices[i] - prices[i - 1];
if(tmp > 0) res += tmp;
}
return res;
}
}
5、55. 跳跃游戏
看覆盖范围,使用贪心
class Solution {
public boolean canJump(int[] nums) {
int cover = 0;
for(int i = 0; i <= cover; ++i)
{
cover = Math.max(cover,i + nums[i]);
if(cover >= nums.length - 1) return true;
}
return false;
}
}