首页 > 试题广场 >

数组移动跳跃

[编程题]数组移动跳跃
  • 热度指数:5327 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给定一个非空的整数数组,从数组第一个元素(下标为0的元素)开始遍历进行移动,下一次向后或向前移动 该元素的值 的位数(值为正数向后移动,值为负数向前移动,值为零不移动),依次类推进行移动,若某次移动数组出现越界,则说明数组可以跳出,返回true;不能跳出则返回false;(加分项:也可考虑不增加使用其他集合数组辅助完成算法)
例1:
输入数组a[5] = [1,2,3,2,5];从第一个元素开始a[0]=1,下次向后移动1位到第二个元素a[1]=2,再次向后移动2位到第四个元素a[3],因为下次向后移动2位(a[3]=2)后,向后数组越界,即跳出数组,输出true;
例2:
输入数组a[2] = [1,-3];从第一个元素开始a[0]=1,下次移动1位到第二个元素a[1]=-3,再次向前移动3位后,向前数组越界,即跳出数组,输出true;



输入描述:
一个非空的整数数组(至少有一个元素,可正可负)


输出描述:
按规则移动后是否能跳出数组
示例1

输入

[1]

输出

true
示例2

输入

[2,1,3,5]

输出

true
示例3

输入

[2,1,-3]

输出

true
示例4

输入

[1,1,1,2,-1,1,-3]

输出

false
头像 牛客284387922号
发表于 2022-05-26 15:11:42
//解题思路:判断数组移动后的下标是否>=arr.length或小于0 var arr = readline(); //移动次数 var count = 0; //默认false var flag = false; //数组下标 var index = 0; //可移动次数不会超过数组长度 w 展开全文
头像 牛客284387922号
发表于 2022-05-26 15:12:28
//判断数组移动后的下标是否超过arr.length或小于1 var arr = JSON.parse(readline()); //统计访问次数 var count = 0; //默认false var flag = false; var k = 0; while(count<= arr.l 展开全文
头像 牛客题解官
发表于 2020-06-05 15:44:34
题目难度:简单难度 知识点:字符串、数组 题解 首先考虑:将输入的字符串进行拆分转化为数组(该过程见代码)。其次:怎样判断是否越界,两种方法: 方法(一) 构造一个辅助数组,初始值为0,已经访问过的下标将其值设置为1。跳转到某个下标处是,判断辅助数组其下标处的值是否为1,若为1,则不能跳出,输出fl 展开全文
头像 这就是命啊~
发表于 2020-03-13 00:02:28
分析 不能跳出的条件为 跳到值为0的地方还没有跳出 跳到以前跳过的地方则说明进入循环,永远不能跳出。 解题思路 基于上面的分析,只需要判断出现以上两种情况时是否跳出即可。第一种情况很好判断,第二种情况很容易想到用一个Set存储跳过的位置,每次跳到一个新位置后判断这个位置是否在Set中出现过。若出 展开全文
头像 cchangcs
发表于 2019-08-24 15:20:24
题目描述: 给定一个非空的整数数组,从数组第一个元素(下标为0的元素)开始遍历进行移动,下一次向后或向前移动 该元素的值 的位数(值为正数向后移动,值为负数向前移动,值为零不移动),依次类推进行移动,若某次移动数组出现越界,则说明数组可以跳出,返回true;不能跳出则返回fals 展开全文
头像 执着的牧马人
发表于 2022-07-11 20:47:27
def arr_input():     arr=[int(a) for a in input()[1:-1].split(",")]     return a 展开全文