LeetCode455. 分发饼干
-------------------------
public int jump(int[] nums) { int cnt = 0; if (nums == null || nums.length == 0) { return cnt; } int len = nums.length; int maxPos = 0; //此次最远能到达的位置 int right = 0; //上次最远能到达的位置 for (int i = 0; i < len - 1; i++) { maxPos = (nums[i] + i) > maxPos ? (nums[i] + i) : maxPos; if (i == right) { cnt++; right = maxPos; } } return cnt; }
public int maxSubArray(int[] nums) { if (nums == null || nums.length == 0) { return 0; } int res = nums[0]; int sum = nums[0]; for (int i = 1; i < nums.length; i++) { if (sum <= 0) { sum = nums[i]; } else { sum += nums[i]; } res = res > sum ? res : sum; } return res; }
public int[][] merge(int[][] intervals) { if(intervals == null || intervals.length == 0){ return intervals; } List<int[]> list = new ArrayList<>(); Arrays.sort(intervals, new Comparator<int[]>() { @Override public int compare(int[] o1, int[] o2) { return o1[0] - o2[0]; } }); int start = intervals[0][0]; int end = intervals[0][1]; for (int i = 1; i < intervals.length ; i++) { if(intervals[i][0] > end){ list.add(new int[]{start,end}); start = intervals[i][0]; end = intervals[i][1]; }else { end = end > intervals[i][1]? end : intervals[i][1]; } } list.add(new int[]{start,end}); return list.toArray(new int[list.size()][2]); }
public int wiggleMaxLength(int[] nums){ if(nums == null){ return 0; } if(nums.length<2){ return nums.length; } int len = 1; boolean flag = false; for (int i = 1; i < nums.length ; i++) { if(nums[i] == nums[i-1]){ continue; } if(flag != (nums[i] > nums[i-1])){ len ++; flag = nums[i] > nums[i-1]; } } return len; }