gpt4 book ai didi

java - 你能帮我找出这段代码中的错误吗?我似乎不明白为什么它不起作用?

转载 作者:行者123 更新时间:2023-12-02 00:54:22 26 4
gpt4 key购买 nike

https://www.hackerrank.com/challenges/new-year-chaos/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=arrays

我遇到问题的问题的链接...

我的逻辑是从数组末尾开始一个循环并向前移动,检查哪些元素就位,然后交换以使元素处于正确的位置,我在下面附加了我的代码。我一一交换,因为这就是他们在示例测试用例中展示的方式。

    static void minimumBribes(int[] q) {

int moves = 0;
boolean tc = false;

for(int i = q.length-1; i >= 0; i--){

if(q[i] != i+1 && q[i] >= (i+1)){

int diff = q[i] - (i+1);
if(diff > 2){

System.out.println("Too chaotic");
tc = true;
}else{

moves = moves + diff;
for(int j = 1; j <= diff; j++){

arrSwap(q, i-1+j, i+j);
}
i--;
}
}else{

continue;
}
}
if(tc == false){

System.out.println(moves);
}

}

public static void arrSwap (int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;

}

输入:1 2 5 3 4 7 8 6

输出:3

预期输出:4

最佳答案

你可以使用Bobble排序解决这个问题。这是我的代码:

static void minimumBribes(int[] q) {
int []res=new int[q.length];
boolean change=true;
for(int i=0;i<q.length;i++)
res[i]=0;
while(change){
change=false;
for(int i=0,j=i+1;j<q.length;i++,j++){
if(q[i]>q[j]){
res[q[i]-1]++;
arrSwap(q,i,j);
change=true;
}
}
}
int n=0;
for(int i=0;i<q.length;i++){
if(res[i]>2){
System.out.println("Too chaotic");
return;
}
else
n+=res[i];
}
System.out.println(n);
}

public static void arrSwap (int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}

我的代码可能不是最好的解决方案。

关于java - 你能帮我找出这段代码中的错误吗?我似乎不明白为什么它不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57832513/

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