gpt4 book ai didi

java - 如何将数组中的所有值向右移动并插入新的第一个值?

转载 作者:行者123 更新时间:2023-12-04 17:18:38 24 4
gpt4 key购买 nike

这是我目前的代码

for (int i = 0; i < (arr.length - 1); i++) {
arr[i+1] = arr[i];
}

arr[0] = newNum;

我遇到的问题是这段代码将初始的第一个值 arr[0] 复制到数组中的每个其他槽。

例如,[2, 7, 5, 3],并插入新的数字 6,将输出 [6, 2, 2, 2]

如有任何帮助,我们将不胜感激。

最佳答案

问题是你的循环从左到右。通过向右移动,然后将下一个向右移动,您可以将第一个值分散到整个数组中。

假设列表是 [1,4,2,5]。然后第一次迭代将导致:

   [1,4,2,5]
-> [1,1,2,5]

下一个 i = 1,因此:

   [1,1,2,5]
-> [1,1,1,5]

最后如果i = 2,那么:

   [1,1,1,5]
-> [1,1,1,1]

您可以通过从右到左迭代来解决问题:

for (int i = <b>arr.length - 2</b>; i <b>>= 0</b>; i<b>--</b>){ //array works right to left
arr[i+1] = arr[i];
}
arr[0] = newNum;

现在移位将发生如下,对于我们的示例,ii = 2 开始,因此在第一次迭代之后:

   [1,4,2,5]
-> [1,4,2,2]

现在我们递减 i 并将 a[1] 复制到 a[2]:

   [1,4,2,2] 
-> [1,4,4,2]

最后是 i = 0,因此我们将 a[0] 复制到 a[1]:

   [1,4,4,2]
-> [1,1,4,2]

现在内容向右移动了,我们可以将a[0]设置为新值。

关于java - 如何将数组中的所有值向右移动并插入新的第一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44083484/

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