博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode]--55. Jump Game
阅读量:6519 次
发布时间:2019-06-24

本文共 1222 字,大约阅读时间需要 4 分钟。

Given an array of non-negative integers, you are initially positioned at the first index of the array.

Each element in the array represents your maximum jump length at that position.

Determine if you are able to reach the last index.

For example:

A = [2,3,1,1,4], return true.A = [3,2,1,0,4], return false.

第一种方法就是动态规划的,利用一个布尔类型的数组装着数组中所有的元素能否到达最后一个元素。不过这种超时了。

超时

// version1: Dynamic Programming    public boolean canJump(int[] nums) {        boolean[] can = new boolean[nums.length];        can[0] = true;        for (int i = 0; i < nums.length; i++)            for (int j = 0; j < i; j++)                if (can[j] && j + nums[j] >= i) {                    can[i] = true;                    break;                }        return can[nums.length - 1];    }

第二种就是贪心算法,尽可能多放进来呗。这个肯定是AC了。就看这个整个数组能跑多远,如果最远能跑到数组的长度就是true。

// version2: Greedy    public boolean canJump(int[] nums) {        // think it as merging n intervals        if (nums == null || nums.length == 0)            return false;        int farthest = nums[0];        for (int i = 1; i < nums.length; i++) {            if (i <= farthest && nums[i] + i >= farthest)                farthest = nums[i] + i;        }        return farthest >= nums.length - 1;    }

转载地址:http://gtgfo.baihongyu.com/

你可能感兴趣的文章
Strategy for Python Challenge(01)
查看>>
Spring事务异常回滚,try catch 捕获异常不回滚
查看>>
钢管识别项目1
查看>>
iOS的@try、@catch()
查看>>
中科院院士谭铁牛:人工智能发展需要理性务实
查看>>
真正的开源与人造开源之间的斗争愈演愈烈
查看>>
Coding and Paper Letter(十七)
查看>>
ES6特性之:模板字符串
查看>>
NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战
查看>>
Netflix如何节省92%视频编码成本?
查看>>
ios兼容iphonex刘海屏解决方案
查看>>
HBuilder使用夜神模拟器调试Android应用
查看>>
就是要你懂TCP -- 握手和挥手
查看>>
Andrew Ng机器学习公开课笔记 -- Regularization and Model Selection
查看>>
《Python游戏编程快速上手》一1.3 如何使用本书
查看>>
《Android游戏开发详解》——第1章,第1.3节声明和初始化变量
查看>>
《Visual Studio程序员箴言》----1.2 滚动与导航
查看>>
Processing编程学习指南2.7 Processing参考文档
查看>>
架构师速成-架构目标之伸缩性\安全性
查看>>
用机器学习流程去建模我们的平台架构
查看>>