[C++]LeetCode: 103 Jump Game (局部最优和全局最优法)

题目:

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.

思路:动态规划求解,我们维护两个变量,一个局部最优,一个全局最优。一个表示到目前为止我们能达到的最远距离,即local = A[i]+i, 另外一个是当前一步出发能跳到的最远距离,global = max(global, local). 确定了递推关系,递推终止条件,达到数组末尾,如果global > n-1, 说明我们可以用抵达数组的末尾(global表示最大距离,我们可以选择刚好的步伐达到末尾)。

复杂度:遍历一次,O(N),空间O(1)

Attention:

1. 空数组,返回false

if(n == 0) return false;

2. 跳跃时,我们需满足两个条件,i < n && i <= reach, 我们不能够超出全局的最远距离。

for(int i = 0; i < n && i <= reach; i++)

AC Code:

class Solution {
public:
    bool canJump(int A[], int n) {
        if(n == 0) return false;
        int reach = 0; //全局最远距离

        for(int i = 0; i < n && i <= reach; i++)
        {
            reach = max(A[i]+i, reach);
        }

        if(reach >= n-1)
            return true;
        else
            return false;
    }
};
时间: 2024-11-07 19:33:55

[C++]LeetCode: 103 Jump Game (局部最优和全局最优法)的相关文章

[C++]LeetCode: 104 Jump Game II (局部最优和全局最优法)

题目: 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. Your goal is to reach the last index in the minimum number of j

【LeetCode】Jump Game

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 = 

【LeetCode】Jump Game II

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. Your goal is to reach the last index in the minimum number of jumps

【LeetCode】Jump Game II 解题报告

[题目] 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. Your goal is to reach the last index in the minimum number of

【Spark篇】---Spark调优之代码调优,数据本地化调优,内存调优,SparkShuffle调优,Executor的堆外内存调优

一.前述 Spark中调优大致分为以下几种 ,代码调优,数据本地化,内存调优,SparkShuffle调优,调节Executor的堆外内存. 二.具体    1.代码调优 1.避免创建重复的RDD,尽量使用同一个RDD 2.对多次使用的RDD进行持久化 如何选择一种最合适的持久化策略? 默认情况下,性能最高的当然是MEMORY_ONLY,但前提是你的内存必须足够足够大,可以绰绰有余地存放下整个RDD的所有数据.因为不进行序列化与反序列化操作,就避免了这部分的性能开销:对这个RDD的后续算子操作,

LAMP 系统性能调优之内核调优措施

LAMP 系统性能调优之内核调优措施 2011-03-18 11:21 Sean A. Walberg 网络转载 字号:T | T 在对系统的 Apache.PHP 和 MySQL 组件进行调优之前,应该花一些时间确保底层 Linux 组件的运行正常.这点是非常重要的! AD:2014WOT全球软件技术峰会北京站 课程视频发布 LAMP LAMP的一些快速的内核调优措施 大多数 Linux 发布版都定义了适当的缓冲区和其他 Transmission Control Protocol(TCP)参数

Spark性能调优之JVM调优

Spark性能调优之JVM调优 通过一张图让你明白以下四个问题 1.JVM GC机制,堆内存的组成                2.Spark的调优为什么会和JVM的调优会有关联?--因为Scala也是基于JVM运行的语言                3.Spark中OOM产生的原因                4.如何在JVM这个层面上来对Spark进行调优 补充:                Spark程序运行时--JVM堆内存分配比例 RDD缓存的数据(0.6)    默认 对象_

优佳贝开发优佳贝模式详解

优佳贝开发优佳贝模式详解(微or电 158.1500.1390 小凡团队)优佳贝系统开发,优佳贝模式定制,优佳贝软件开发,优佳贝app开发,优佳贝模式系统开发. 互联网颠覆了传统的商业模式,创造了庞大的商业机遇,更改变了世界财富的分配定律!互联网已经无国界,已经引申到世界每一个角落.互联网与电子商务的结合,必将创造一个又一个新奇迹!在历史发展的当今世界.21世纪,整个世界经济发生了巨大的变化!21世纪更是一个移动互联网经济占据鳌头的市场!谁抓住了互联网市场趋向谁就抓住了,在互联网一体化的今天,信

spark性能调优:开发调优

在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算操作,应用范围与前景非常广泛. 然而,通过Spark开发出高性能的大数据计算作业,并不是那么简单的.如果没有对Spark作业进行合理的调优,Spark作业的执行速度可能会很慢,这样就完全体现不出Spark作为一种快速大数据计算引擎的优势来.因此,想要用好Spark,就必须对其进行合理的性能优化. Spark的