有赞2019校招Java笔试(B卷)

给定一个非空的整数数组,从数组第一个元素(下标为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]

 

输出例子1:

true

 

输入例子2:

[2,1,3,5]

 

输出例子2:

true

 

输入例子3:

[2,1,-3]

 

输出例子3:

true

 

输入例子4:

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

 

输出例子4:

false

代码

package vijos题目;

public class 数组移动跳跃 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int arr[]=new int []{1,1,1,2,-1,1,-3};
        int arr1[]=new int []{2,1,-3};
        arrmove a=new arrmove(arr1);
        a.move();
    }

}/*
例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; 
思路:遍历数组,for循环 i=i+arr【i】;
*/
class arrmove{
    int arr[]=new int[20];
    int num=0;
    int n=0;
    arrmove(int arr[]){
        this.arr=arr;
    }
    public void move() {
        for(int i=0;i<arr.length;i=i+arr[i]){
            num=num+arr[i];
            n++;
            if(num>arr.length||num<0){
                System.out.println("true");
                break;
            }
            else if(n>arr.length){
                System.out.println("flase");
                break;
            }
        }
        
    }
    
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值