gpt4 book ai didi

Java删除数组中的冗余项

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

对于这个特定问题,我尝试删除排序数组中的冗余元素,并在数组的末尾将它们全部替换为 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

我有什么遗漏吗?

提前致谢。

最佳答案

不是您问题的答案,但使用(如果可能的话)java流可以缩短您的时间:

int[] arr = {1,3,3,4,4,5,6,6,7};

// distinct
List<Integer> list = Arrays.stream(arr).distinct().boxed().collect(Collectors.toList());

// pad with zero's
while(list.size() < arr.length) {
list.add(0);
}

// display
System.out.println(list.stream().map(String::valueOf).collect(Collectors.joining(",")));

将输出

1,3,4,5,6,7,0,0,0

关于Java删除数组中的冗余项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52124666/

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