Leetcode的bug测试用例 ?? jump game

之所以说leetcode的测试用例有问题,是因为我刚开始理解错了题意,写下了如下的错误的代码。但是却AC了。

错误代码为:

    bool canJump(int A[], int n) {
        if(n == 0) return true;

        int sum = 0; //记录当前的最远距离

        int  i = 0;
        while(i < n)
        {
            if(A[i] != 0)
            {
                i+= A[i];
            }
            else
            {
                break;
            }
        }

        if(i >= n-1) return true;
        return false;
}

上述代码有问题,理解错误,直接举反例:2,5,0,0,0上述代码的结果为false。但是实际应该是true;

因此建议不要相信leetcode AC的代码,自己还需要更小心。当然如果你想的算法是正确的,就不会出现上述算法完全是错的,但是却AC了。

题目描述:

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个位置出发是否可以到达最后一个元素,如果从第一个点可以到达最后一个点,那么显然其中的每一个点都是可以到达的。这就可以使用贪心的算法。

大致执行过程如下:

首先,查看第一个元素能到达的位置范围为[0, A[0]],那么也就是说0到A[0]中间的所有的点都可到达,那么这些点能够到达的范围是什么呢?只需要将能到达范围内的元素按照上述方式全部遍历一遍,看起能够到达的范围最终是否到达了n。

代码如下:

    bool canJump(int A[], int n) {
        if(n == 0) return true;
                int right = 0; //the reached right-most position
        for(int i = 0 ; i <= right && right < n-1 ; ++i)
        {
            right = max(right,i+A[i]);
        }
        return right >= (n-1);
    }

right用来保存最右边能够到达的位置。

Leetcode的bug测试用例 ?? jump game,布布扣,bubuko.com

时间: 2024-10-14 20:23:26

Leetcode的bug测试用例 ?? jump game的相关文章

【Leetcode】经典的Jump Game in JAVA

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 =

bug report: Jump to the invalid address stated on the next line at 0x0: ???

gdb或者vlagrind报告: ==14569== Jump to the invalid address stated on the next line ==14569== at 0x0: ??? ==14569== Address 0x0 is not stack'd, malloc'd or (recently) free'd 错误原因:函数通过jmp,call,ret等指令跳转到0x00,错误可能出现的范围 1.函数缓冲区溢出覆盖了返回地址,然后又调用了return,例如 #inclu

发现LeetCode大bug一个!!!!!!

1. Two Sum 第36行本来应该是if (nodes.get(left).key < nodes.get(right).key) { 一不小心误写成了if (nodes.get(left).key < nodes.get(right).value) { 竟然A了!!!! 1 class Node{ 2 int key; 3 int value; 4 public Node(int key, int value) { 5 this.key = key; 6 this.value = val

LeetCode(一) jump game

一. 1. #include<iostream> #include<cmath> using namespace std; bool CanJump(int n[],int num) { if (num==1) return 1; //如果向量长度为 1,则 int loc; int gla=0; for(int i=0;i<num-1;i++) { if(gla<i){ //进入不到下一步 break; } loc=i+n[i]; //局部变量,每一个位置能达到的最远

[LeetCode][JavaScript]Jump Game

https://leetcode.com/problems/jump-game/ 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

LeetCode | 机器人能否返回原点

放假的时间已经过去一半了,每天坚持看一个多小时的书,时间虽然不多,但是能专心把书看进去就可以了.今天分享的是 LeetCode 上面的第 657 题,题目是<机器人能否返回原点>,这也是一道简单的题. LeetCode 题库的第 657 题——机器人能否返回原点 题的解法也很简单,先定义坐标,并设置坐标为(0, 0),然后按照给定的方向去移动,在移动的过程中修改方向,移动完以后再次判断坐标是否为(0, 0)即可.代码如下: 1 bool judgeCircle(char* moves) { 2

bug管理工具之禅道的测试模块的使用

由于公司的bug管理工具是禅道,上手之前看了下禅道测试模块的使用,并记录了下来 角色:产品经理PO,项目经理PM,开发,测试 测试任务: bug: 1.维护bug视图模块:[测试]-[Bug]-左侧[维护模块]:维护软件每一个模块,即新建-删除-修改模块/子模块名称(如[首页]模块,[关于我们]模块) 2.提交bug:[测试]-[Bug]-[+提Bug] 注意点: (1)Bug的优先级别(见bug优先级别随笔)以及严重级别标准? (2)Bug负责人如何划分? (3)Bug修复截止时间如何确定?

[转]前人挖坑,后人填坑—如何把那些bug挖掘出来

当我们放下一个项目转投下一个时,手头的东西就要转交给他人处理,或者..不再有人处理,可代码还在那里,搞不好你就引用了别人的东西,保不准哪天别人的代码里就爆出了个大 bug,当然这里的“别人”也可能是 你!我们既不希望自己是受害者,更不希望自己是施害者. 写代码不免出点bug,没有人可以保证自己写的代码不出问题,而那些没有被挖掘出来的bug,便成了后来者哭笑不得的坑... 这段时间公司全面 https 改造,涉及到域名的迁移,域名的迁移不是 nginx 做个映射就完事儿了,还有各种代码的去 sch

pat1010. Radix (25) BUG!!!

#include<stdio.h> #include<stdlib.h> #include<string.h> int c2int(char c){ if('0'<=c&&c<='9') return c-'0'; else return c-'a'+10; } long s2decimal(char str[], long radix){ long digit, sum=0; // 必须判断每一位是否小于radix int i=0; for