使用贪心比较简单,设置一个最远距离,该距离从下标为0的开始计算。用i来遍历下标,i的范围就是从0到最远距离之间,每遍历一次就计算一次最远距离,当最远距离>=数组长度时就返回true,否则返回false。
代码class Solution {
public boolean canJump(int[] nums) {
if(nums.length == 1){
return true;
}
//LongestDistance从0开始
int LongestDistance = nums[0]+0;
for(int i =0;i<=LongestDistance;i++){
if(LongestDistance >= nums.length-1){
return true;
}
LongestDistance = Math.max(LongestDistance,nums[i]+i);
}
return false;
}
}
LeetCode56. 合并区间
思路
用两个指针l和r来遍历数组。每次将r和下一个数组的第一个值比较,如果r小于的话就将l和r对应的数组添加到res中,并且更新l和r。
反之,更新r,r等于r和其第二值最大的,遍历结束后,还有最后一次更新的l和r没有添加到res,将l和r添加后即可。
代码class Solution {
public int[][] merge(int[][] intervals) {
if(intervals == null || intervals.length == 1){
return intervals;
}
List res = new ArrayList<>();
Arrays.sort(intervals,(x, y)-> x[0] - y[0]);
int l = intervals[0][0];
int r = intervals[0][1];
for(int i=1;ir){
res.add(new int[]{l,r});
l = intervals[i][0];
r = intervals[i][1];
}else{
r = Math.max(intervals[i][1],r);
}
}
res.add(new int[]{l,r});
return res.toArray(new int[0][]);
}
}



