136. 只出现一次的数字

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

  1. public class Solution {
  2. public int singleNumber(int[] nums) {
  3. int res;
  4. for (int n:nums) {
  5. res ^= n;
  6. }
  7. return res;
  8. }
  9. }

137. 只出现一次的数字 II

给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。

  1. public class Solution {
  2. public int singleNumber(int[] nums) {
  3. int res = 0;
  4. Map<Integer,Integer> map = new HashMap<>();
  5. for (int n:nums) {
  6. map.put(n,map.getOrDefault(n,0) + 1);
  7. }
  8. for (Map.Entry<Integer,Integer> en:map.entrySet()) {
  9. int k = en.getKey();
  10. int v = en.getValue();
  11. if (v == 1) {
  12. res = k;
  13. break;
  14. }
  15. }
  16. return res;
  17. }
  18. }

260. 只出现一次的数字 III

给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。
输入:nums = [1,2,1,3,2,5] 输出:[3,5] 解释:[5, 3] 也是有效的答案。

  1. public class Solution {
  2. public int singleNumber(int[] nums) {
  3. int index = 0;
  4. int[] res = new int[2];
  5. Map<Integer,Integer> map = new HashMap<>();
  6. for (int n:nums) {
  7. map.put(n,map.getOrDefault(n,0) + 1);
  8. }
  9. for (Map.Entry<Integer,Integer> en:map.entrySet()) {
  10. int k = en.getKey();
  11. int v = en.getValue();
  12. if (v == 1) {
  13. res[index++] = k;
  14. }
  15. }
  16. return res;
  17. }
  18. }