gpt4 book ai didi

java - 旋转数组并找到最大元素的索引

转载 作者:行者123 更新时间:2023-12-02 11:34:25 25 4
gpt4 key购买 nike

我正在开发一个程序,在该程序中,我需要找出数组的索引位置,该索引位置在对该数组进行左旋转后保存该数组中的最大值。

例如:

如果数组是{5,7,1,8,2}。该数组最大值为 8。如果我将数组旋转 2 次,则结果为 1,8,2,5,7。那么最大元素8的索引位置就是1。

如果我将数组 {5,7,1,8,2} 旋转 6 次,则数组将变为 7,1,8,2,5。 8 的索引现在是 2。

我的程序将数组和旋转次数作为输入,并返回一个数组,其中包含数组旋转时最大元素的索引位置。

int[] rotate(int[] array, int[] rotate) {
int[] result = new int[rotate.length];
int index = 0;
int large = array[0];
for (int i = 1; i < array.length; i++) {
if (array[i] > large) {
large = array[i];
index = i;
}
}
for (int i = 0; i < rotate.length; i++) {
int r = rotate[i];
if (index - r < 0) {
if (r > array.length) {
r = r % array.length;
result[i] = index - r;
} else {
result[i] = index - (index - r);
}
} else {
result[i] = index - r;
}
}
return result;
}

该程序在某些情况下有效,但对于我无法找到的其他测试用例则失败。

您能帮我看看我在这段代码中哪里出错了吗?

最佳答案

您可以使用以下功能。看到它工作here :

int[] rotate(int[] array, int[] rotate) 
{
int[] result = new int[rotate.length];
int index = 0;
int large = array[0];
for (int i = 1; i < array.length; i++) {
if (array[i] > large) {
large = array[i];
index = i;
}
}
int len = array.length;
for (int i = 0; i < rotate.length; i++) {
int r = (index - (rotate[i]%len));
result[i] = (r>=0) ? r : (len+r);
}
return result;
}

以下是完整代码:

class Test
{
static int[] rotate(int[] array, int[] rotate)
{
int[] result = new int[rotate.length];
int index = 0;
int large = array[0];
for (int i = 1; i < array.length; i++) {
if (array[i] > large) {
large = array[i];
index = i;
}
}
int len = array.length;
for (int i = 0; i < rotate.length; i++) {
int r = (index - (rotate[i]%len));
result[i] = (r>=0) ? r : (len+r);
}
return result;
}

public static void main (String[] args) throws java.lang.Exception
{
int nums[] = {5,7,1,8,2};
int r[] = {2, 6, 5, 1, 2, 3, 4, 5, 0};

int res[] = rotate(nums, r);

for(int i=0; i<res.length; i++)
{
System.out.println(r[i] + " = "+ res[i]);
}
}
}

输出:

2 = 1
6 = 2
5 = 3
1 = 2
2 = 1
3 = 0
4 = 4
5 = 3
0 = 3

关于java - 旋转数组并找到最大元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49057854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com