栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

LeetCode55+56

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode55+56

LeetCode55. 跳跃游戏 思路

使用贪心比较简单,设置一个最远距离,该距离从下标为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][]);
    
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968924.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号