zoukankan      html  css  js  c++  java
  • 贪心——55. 跳跃游戏

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

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

    判断你是否能够到达最后一个下标。

    示例 1:

    输入:nums = [2,3,1,1,4]
    输出:true
    解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。
    示例 2:

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

    当我还是一个小白时,我写的代码是这样,此时我还不会巧妙的借助现成的武器。当我长大后,我学会了利用手里的武器,隐藏共鸣,达到自己才能懂得境界。

    我是如何进阶的,尽可能省去多余的变量,利用现有的变量。我写代码的一个缺点,就是不会利用循环。

    class Solution {
        public boolean canJump(int[] nums) {
            if (nums.length == 0)
                return true;
            int start = 0;
            int end = 0;
            int maxjump = nums[0];
            int maxlen = nums.length-1;
            while (true) {
                start = end + 1;
                end = maxjump;
                if (end >= maxlen)
                    return true;
                if (start > maxlen)
                    return true;
                int tempmax = 0;
                for (int i = start; i <= end; i++) {
                    if ((i + nums[i]) > tempmax)
                        tempmax = i + nums[i];
                }
                maxjump = tempmax;
                if (maxjump == end)
                    return false;
            }
    
        }
    }

    大神循环去变量版本

    public class Solution {
        public boolean canJump(int[] nums) {
            int n = nums.length;
            int rightmost = 0;
            for (int i = 0; i < n; ++i) {
                if (i <= rightmost) {
                    rightmost = Math.max(rightmost, i + nums[i]);
                    if (rightmost >= n - 1) {
                        return true;
                    }
                }
            }
            return false;
        }
    }
  • 相关阅读:
    5.4Java Collections工具类 != Collection接口没关系
    4.30Java 手动敲简易的HashSet
    5.4Java使用容器存储表格数据
    4.30Java Iterator迭代器遍历容器元素(List/Set/Map)
    5.4Java IO流开篇
    windows管理规范WMI
    META标签的奥妙
    C#2.0泛型--Dictionary,List用法
    Win32类及其管理对象
    Asp.net中GridView使用详解(引)
  • 原文地址:https://www.cnblogs.com/xiaoming521/p/15013352.html
Copyright © 2011-2022 走看看