题目描述
一个数组向右平移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版权协议,转载请附上原文出处链接和本声明。