这个问题来自hackerrank。 https://www.hackerrank.com/challenges/circular-array-rotation/problem
输入:
一个由n个数字组成的数组(int [])
转数(k)1> = k <= n
旋转数组索引大小为m的数组(int [])
输出: 具有旋转数组元素的m大小的数组(int [])
我已经解决了旋转问题,它将改变数组元素的位置。 我试图在不更改原始数组的情况下解决问题(通过数学方式处理旋转的数组索引)。这是我编写的方法,适用于我使用的用例,但在hackerrank上它显示1个测试失败。
private int[] withoutRotateArray(int[] input, int k, int[] checkIndex) {
for (int i = 0; i < checkIndex.length; i++) {
if(checkIndex[i] < k) {
checkIndex[i] = input[input.length - (k - checkIndex[i])];
} else {
checkIndex[i] = input[Math.abs(k - (checkIndex[i]))];
}
}
return checkIndex;
}
有人可以帮助我了解我的方法有什么问题吗?
示例:
I / P数组[1,2,3,4,5]
转数:2
检查索引:[2,4]
O / P数组[1,3]
答案 0 :(得分:-1)
在HackerRank上,您应注意不要更改作为参数获取的任何对象/数组(除非在挑战中要求这样做):通常,测试代码依赖于您的代码不执行此操作的假设。 / p>
因此,与其将结果存储在checkIndex
中,不如为其创建一个新数组,然后将其返回。