gpt4 book ai didi

java - 如何引用顺序计算列表中的重复值

转载 作者:太空宇宙 更新时间:2023-11-04 13:10:19 24 4
gpt4 key购买 nike

我在计算列表中的重复值时遇到问题。我有这个列表 [1 2 7 2 3 3 4 4 5 ] 并希望根据其顺序计算内部的重复值并获得此输出[0 0 0 1 0 1 0 1 0]

另一个例子:[ 4 5 2 2 2 7 9 9 9 ] -> [ 0 0 0 1 2 0 0 1 2 ]

有人帮我用java实现这个吗?我已经尝试使用 Collections。频率(list, list.get(i)) 但它对我没有帮助。

最佳答案

这是一个应该适合您的 Java 7 解决方案。它重用输入List来存储频率。 Java 8 中可能有 2-3 线性解决方案。

List<Integer> input = Arrays.asList(1, 2, 7, 2, 3, 3, 4, 4, 5);
Map<Integer, Integer> counts = new HashMap<Integer, Integer>();

for (int i=0; i < input.size(); ++i) {
int val = input.get(i);
Integer count = (counts.get(val) == null) ? 0 : counts.get(val) + 1;
input.set(i, count);
counts.put(val, count);
}

System.out.println(input);

输出:

[0, 0, 0, 1, 0, 1, 0, 1, 0]

我还用您的其他示例测试了代码,它有效:

[4 5 2 2 2 7 9 9 9] -> [0 0 0 1 2 0 0 1 2]

关于java - 如何引用顺序计算列表中的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34035344/

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