【发布时间】:2018-09-01 03:39:06
【问题描述】:
对于这个特殊问题,我试图删除排序数组中的冗余元素,并在数组的 end 处将它们全部替换为 0。例如,如果我有一个由 int 元素组成的数组
1,3,3,4,4,5,6,6,7
我的输出数组应该是
1,3,4,5,6,7,0,0,0
我对这个问题的第一次尝试是创建一个交换器,以便在删除元素后将所有 0 推到列表的末尾,但它似乎不会将零推到列表的末尾。这是我的代码。
public void implode(int[] ary)
{
int swapper = -1;
int[] newARY = new int[ary.length];
int current = -1;
for (int i = 0; i < ary.length; i++)
{
if (current != ary[i])
{
newARY[i] = ary[i];
current = ary[i];
}
}
for (int i = 0; i < ary.length; i++)
{
if (ary[i] == 0)
{
if (ary[i + 1] != 0)
{
swapper = ary[i + 1];
ary[i] = swapper;
ary[i + 1] = 0;
}
}
}
ary = newARY;
for (int i = 0; i < newARY.length; i++)
{
System.out.print(newARY[i] + " ");
}
}
我测试它的数组是,
int[] aryIn2 = {1, 1, 2, 3, 4, 4, 5, 6};
但是,当输出内爆数组时,我收到了这个。
1 0 2 3 4 0 5 6
我有什么遗漏吗?
提前致谢。
【问题讨论】:
-
你真的需要那些零吗?因为它失败了删除数组中冗余元素的任务(有多个零,运行你的
implode())。
标签: java arrays loops redundancy