Android开发 算法一个数组向右平移K

题目描述

一个数组向右平移k后得到一个新的数组,例如:数组[1,2,3,4,5,6,7]向右平移k为1,得到新数组[7,1,2,3,4,5,6];向右平移k为3得到新数组[5,6,7,1,2,3,4];

今天又面试了算法题这么简单的算法离开开发工具,裸写竟然如此丢人,各种错误,先看正确代码:

int[] ns = {1, 2, 3, 4, 5, 6, 7};
List ls = Arrays.stream(ns).boxed().collect(Collectors.toList());
System.out.println("返回数组 = " + reverse(ls, 3));
	
public List reverse(List nums, int k) {
    if (k > 0 && k < nums.size()) {
        List end = nums.subList(0, nums.size() - k);
        List head = nums.subList(nums.size() - k, nums.size());
        head.addAll(end);
        return head;
    }
    return nums;
}

就这么简单的代码离开开发工具我还能写出各种错误,真丢人,首先int数组转换list集合就写错了,k>0漏掉了,其次对subList理解有误,subList是左闭右开,所以到达不了右边值,最多只能到达toIndex-1,今天记录下来自己的错误,希望不要再犯错了。

看一下返回值:

返回数组 = [5, 6, 7, 1, 2, 3, 4]
Process finished with exit code 0

版权声明:本文为xhf_123原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。