使用单循环对列表求和

时间:2018-02-16 11:30:11

标签: java

如何对数组中给定的元素数组求和,列表中存在的元素只有一次。如果元素列表两次或更多,则不参与求和。

实施例..

A[ ]={4,2,3,1,2,3,3};
Sum=4+1=5;

因为..2和3在列表中不止一次。 这里的问题我们必须只使用一个循环。也不要使用内循环。 如何在单循环中解决这个问题..

3 个答案:

答案 0 :(得分:7)

我不打算给你一个直接的答案,但我会提出一些让你思考哪些事情可以帮助你的事情。

  • 您可以轻松保持有效的O(1)复杂数字集合(已经看过)。那会是什么?
  • 困难在于,当你第一次“看到”一个数字时,你不知道它是否会在以后重复。所以你有点被迫立即添加。 (即乐观地)
  • 如果您再次看到该号码:您能否想到“撤消”上次中添加的时间?
  • 不要忘记当你第三次或更长时间看到它时,就没有必要再次“撤消”。

答案 1 :(得分:0)

您必须使用1来收集已使用的元素,并使用Map标记进行撤消操作。

boolean

答案 2 :(得分:0)

我会使用java流来总结只有单个元素:

System.out.println(
         Stream.of(4, 2, 3, 1, 2, 3, 3)
         .collect(Collectors.groupingBy(k->k, Collectors.counting()))
         .entrySet()
         .stream()
         .filter(e -> e.getValue() == 1)
         .mapToInt(Map.Entry::getKey)
         .sum());

输出:5