leetcode:137. 只出现一次的数字 II

旧城等待, 2021-09-28 13:52 449阅读 0赞

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

  1. 输入: [2,2,3,2]
  2. 输出: 3

示例 2:

  1. 输入: [0,1,0,1,0,1,99]
  2. 输出: 99
  3. package LeetCode;
  4. import java.util.*;
  5. public class SingleNumberII {
  6. public int singleNumber(int[] nums) {
  7. Set<Integer> set = new HashSet<>();
  8. long y = 0;
  9. for (int i = 0; i < nums.length; i++) {
  10. y+=nums[i];
  11. set.add(nums[i]);
  12. }
  13. Iterator<Integer> it = set.iterator();
  14. long ss = 0;
  15. while (it.hasNext()) {
  16. ss += it.next();
  17. }
  18. long res = (ss * 3 - y) / 2;
  19. return (int) res;
  20. }
  21. public static void main(String[] args) {
  22. int[] nums = {2, 2, 3, 2};
  23. SingleNumberII a = new SingleNumberII();
  24. a.singleNumber(nums);
  25. }
  26. }

发表评论

表情:
评论列表 (有 0 条评论,449人围观)

还没有评论,来说两句吧...

相关阅读

    相关 137. 出现数字 II

    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实