The Solution to Leetcode 55 Jump Game

本文解析了一个跳跃游戏算法问题,探讨了如何判断能否从数组的起始位置到达最后一个元素的方法。通过分析数组中的每个元素代表的最大跳跃长度,给出了一种有效的解决方案。

Question:

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.

思路:当数组除最后一个元素中出现0的时候,则不能跳到最后一个元素,返回false。

元素的数值加上该元素的下标是跳转到下一个元素的下标。我理解的题目的意思是最终正好跳到最后一个元素,但是leetcode 给的expected answer是跳到大于或等于最后一个元素的索引即可,所以代码如下。

Answer:

class Solution {
public:
    bool canJump(vector<int>& nums) {
        int i = 0;  
        while(i<nums.size()-1)  
        {  
            if(nums[i] == 0)  
            {  
                break;  
            }  
            i = i+nums[i];  
        }  
          
        if(i >= nums.size()-1)  
        {  
            return true;  
        }  
        else  
        {  
            return false;  
        }  
    }  
};

run code results:
Your input
[2,3,1,1,4]
Your answer
true
Expected answer
true


### 2023年秋季校招 LeetCode 刷题清单及推荐题目 对于即将参与2023年秋季校园招聘的学生而言,准备一份合理的LeetCode刷题计划至关重要。这份计划不仅有助于提升编程技能,还能增强解决实际问题的能力。 #### 数据结构基础复习 掌握基本的数据结构是解决问题的前提条件。建议先通过一些简单的练习来巩固基础知识[^1]: - 数组操作:`Two Sum`, `Best Time to Buy and Sell Stock` - 字符串处理:`Valid Palindrome`, `Implement strStr()` 这些题目能够帮助理解并熟练运用数组和字符串的基础特性。 #### 基础算法训练 在掌握了数据结构之后,可以逐步过渡到更复杂的算法学习上。这里列举了几类常见的面试考点及其对应的经典习题: - 排序与查找:`Merge Sorted Array`, `Search Insert Position` - 动态规划入门:`Climbing Stairs`, `Fibonacci Number` - 贪心策略应用:`Jump Game`, `Gas Station` 以上提到的每种类型的题目都具有代表性,在求职过程中经常会被提及作为考察重点之一。 #### 高频面试真题演练 为了更好地模拟真实的笔试场景,可以从历年各大公司发布的招聘信息中筛选出高频出现过的试题来进行针对性强化训练。下面是一些被广泛认可的经典案例: - Google/Amazon/Facebook等大厂必考:`Median of Two Sorted Arrays`, `Longest Substring Without Repeating Characters` - Microsoft/Tencent/Baidu青睐之选:`Container With Most Water`, `Minimum Window Substring` 这类高难度挑战不仅能检验个人实力水平,同时也反映了企业对应聘者综合能力的要求标准。 #### 实战技巧分享 除了上述理论性的指导外,还有一些实用的小贴士可以帮助提高效率并优化解法质量: - 尝试多种方法求解同一道题; - 注重边界情况考虑全面; - 多读优秀解答加深印象; ```python def two_sum(nums, target): num_to_index = {} for i, num in enumerate(nums): complement = target - num if complement in num_to_index: return [num_to_index[complement], i] num_to_index[num] = i raise ValueError("No two sum solution") ``` 此函数实现了经典的“两数之和”问题解决方案,体现了哈希表的应用价值以及如何高效地找到满足条件的一对数值组合。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值