LeetCode10|只出现一次的数字II

时间:2022-07-23
本文章向大家介绍LeetCode10|只出现一次的数字II,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1,问题简述

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

说明:

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

2,示例

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

3,解题思路

本题的解题思路使用HashMap键值对集合进行操作,不过使用map这样的集合,使用了额外的空间来做的,功能先做出来,优化后面再说。

4,题解程序

import java.util.HashMap;
import java.util.Map;

public class SingleNumber2Test {
    public static void main(String[] args) {
   int [] array={2,2,3,2};
        int number = singleNumber(array);
        System.out.println("number = " + number);
    }

    public static  int singleNumber(int[] nums) {
        if (nums == null || nums.length == 0) {
            return -1;
        }
        HashMap<Integer, Integer> map = new HashMap<>(nums.length);
        for (Integer num : nums
        ) {
            if (map.containsKey(num)) {
                map.put(num, map.get(num) + 1);
            } else {
                map.put(num, 1);
            }
        }
        for (Map.Entry<Integer, Integer> entry : map.entrySet()
        ) {
            if (entry.getValue() == 1) {
                return entry.getKey();
            }
        }
        return -1;
    }
}

5,键值对集合map在后端开发中还是比较常用的,自己对hashMap的这样的键值对集合也是后面用的比较多才去总结的,因为你走过的每一步没有人给你指点你该去做什么,或者如何做,一切都是需要自己摸索,还好这几年自己都是这样都过来的,也习惯了,手把手教学我也喜欢有这样的老师带着,但是没有遇到,只好自己的路自己走。