leetcode算法练习【55】跳跃游戏

所有题目源代码:Git地址

题目

给定一个非负整数数组,你最初位于数组的第一个位置。

数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个位置。

示例 1:

输入: [2,3,1,1,4]
输出: true
解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 13 步到达最后一个位置。
示例 2:

输入: [3,2,1,0,4]
输出: false
解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。

方案:暴力破解吧,看不出用了啥算法,但是效率还可以

class Solution {
    public boolean canJump(int[] nums) {

        int len = nums.length;
        boolean tmp = true;
        //搜索数组中有没有0
        for(int i =0;i<len-1;i++){
            if(nums[i]==0){
                tmp =false;
                for(int j =i-1;j>=0;j--){
                    if(nums[j]>i-j) tmp=true;
                }
                if (tmp==false) return false;
            }
        }
        return true;
    }
}
复杂度计算
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)
    在这里插入图片描述
原创文章 179 获赞 270 访问量 34万+

猜你喜欢

转载自blog.csdn.net/symuamua/article/details/106118762