【发布时间】:2026-02-23 08:10:01
【问题描述】:
返回一个数组,其中包含与给定数组完全相同的数字,但重新排列,以便每个 3 后面紧跟一个 4。不要移动 3,但每隔一个数字可以移动。该数组包含相同数量的 3 和 4,每个 3 后面都有一个不是 3 的数字,并且 3 出现在数组中的任何 4 之前。这是link .
下面是我的代码。
public int[] fix34(int[] nums) {
for(int k = 0; k<nums.length; k++)
{
if(nums[k] == 3)
{
int jay = nums[k+1];
for(int j = 0; j<nums.length; j++)
{
if(nums[j] == 4)
{
nums[k+1] = nums[j];
nums[j] = jay;
}
}
}
}
return nums;
我想这样做,如果我们找到数字 3,我们会继续寻找 4(可能在 3 之前或之后),然后将 4 与紧接在 3 后面的数字切换。但是,由于它不适用于所有情况,我猜我的代码并没有完全做到这一点。或者,这是一个逻辑错误吗?任何帮助将不胜感激! (我知道还有其他一些解决方案,但我想了解我的问题到底是什么。)
【问题讨论】:
-
对于像这样的情况,您无法通过查看代码来找出代码的问题,使用调试器单步执行程序非常有帮助。任何主流 IDE 都支持这一点。调试器允许您在任何给定点停止程序流并检查该范围内所有可见变量的状态。
标签: java arrays for-loop if-statement