leetcode455 分发饼干

  1. class Solution {
  2. public int findContentChildren(int[] g, int[] s) {
  3. //先对孩子的胃口和饼干尺寸进行排序
  4. Arrays.sort(g);
  5. Arrays.sort(s);
  6. int i=0;
  7. int j=0;
  8. //任意一个数组遍历结束就结束循环
  9. while(i<g.length&&j<s.length){
  10. //如果当前饼干能够满足则跳到下一个孩子
  11. if(s[j]>=g[i]){
  12. i++;
  13. }
  14. //不管当前饼干能否满足,都要跳到下一块饼干
  15. j++;
  16. }
  17. return i;
  18. }
  19. }

leetcode53 最大子序和

  1. class Solution {
  2. public int maxSubArray(int[] nums) {
  3. int res = nums[0];
  4. //如果sum>0,则对后面子序列求和有帮助,否则重新寻找序列头
  5. int sum = 0;
  6. for(int i:nums){
  7. if(sum>0){
  8. sum +=i;
  9. }
  10. else{
  11. sum = i;
  12. }
  13. res = Math.max(res,sum);
  14. }
  15. return res;
  16. }
  17. }

leetcode 摆动序列

  1. class Solution {
  2. public int wiggleMaxLength(int[] nums) {
  3. int up=1;
  4. int down=1;
  5. for(int i=1;i<nums.length;i++){
  6. if(nums[i]>nums[i-1]){
  7. up = down+1;
  8. }else if(nums[i]<nums[i-1]){
  9. down = up+1;
  10. }
  11. }
  12. return nums.length<2? nums.length:Math.max(up,down);
  13. }
  14. }

leetcode45 跳跃游戏

  1. class Solution {
  2. public int jump(int[] nums) {
  3. if(nums.length<2){
  4. return 0;
  5. }
  6. int res = 0;
  7. //每次能跳的最远处
  8. int end = 0;
  9. int posMax = 0;
  10. for(int i =0;i<nums.length;i++){
  11. posMax = Math.max(posMax,i+nums[i]);
  12. //当循环到最远处时,更新下次的边界
  13. if(i==end){
  14. res++;
  15. end = posMax;
  16. }
  17. //能跳到最远处时,跳出循环
  18. if(end>=nums.length-1){
  19. return res;
  20. }
  21. }
  22. return res;
  23. }
  24. }