• 跳跃游戏1,2


    我又懈怠了。。。新的一天重新刷题

    关于跳跃游戏两则:

    第一个是leetcode 55题

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

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

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

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

    问题是判断,能否到达最后一个位置,那么只要我们跳跃的最大长度大于数组长度,那么就一定可以到达最后一个位置。

    求解:

     1 class Solution {
     2 public:
     3     bool canJump(vector<int>& nums) 
     4     {
     5         int n = nums.size();
     6         int longest= 0;
     7         for (int i = 0; i < n; ++i) 
     8         {
     9             if (i <= longest) 
    10                 longest = max(longest, i + nums[i]);
    11                 if (longest >= n - 1) 
    12                     return true;
    13         }
    14         return false;
    15     }
    16 };

    跳跃游戏2

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

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

    你的目标是使用最少的跳跃次数到达数组的最后一个位置。

    输入: [2,3,1,1,4]
    输出: 2
    解释: 跳到最后一个位置的最小跳跃数是 2。
         从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。

    不同点:保证能跳跃到最后一个位置,求最少的跳跃数

    可以选择用动态规划,但是这里可以考虑一下贪心选择

    如图所示,第一个位置0处,可以跳到0+1,0+2处,step+1; 当跳到0+1处,下一步可以跳到0+1++,0+1+2,0+1+3处, step+1; 每一次都判断能否到达最后一个位置,如果到达则return;

    具体实现如下:

     1 class Solution {
     2 public:
     3     int jump(vector<int>& nums) {
     4         int steps = 0;
     5         int start = 0;
     6         int end = 0;
     7         while (end < nums.size()-1) {
     8             int max = end;
     9             for (int i = start; i <= end; i++) {//选一个最有潜力的
    10                 if (nums[i]+i > max) {
    11                     max = nums[i]+i;
    12                 } 
    13             }
    14             start = end+1;
    15             end = max;
    16             steps++;
    17         }
    18         return steps;
    19     }
    20 };
  • 相关阅读:
    docker 镜像管理
    docker 常用操作
    docker 简单介绍与安装
    emacs 缩进
    stl标准库 iterator_traits
    emacs semantic,speedbar,gdb汇总
    在emacs 里使用gdb
    emacs speedbar功能介绍
    前端基础之BOM和DOM
    modules模块
  • 原文地址:https://www.cnblogs.com/doris233/p/13963244.html
Copyright © 2020-2023  润新知