剑指 Offer 56 - II. 数组中数字出现的次数 II

03
六月
2021

剑指 Offer 56 - II. 数组中数字出现的次数 II

题目描述

在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。

示例:

输入:nums = [3,4,3,3]
输出:4

示例:

输入:nums = [9,1,7,9,7,9,7]
输出:1

解题思路:

看到这个题头脑中第一次跳出来的想法是用HashMap,直接统计然后选出来小统计数量为1的那个,简单直接暴力,say干就干,迅速写好如下代码,竟然一次跑过了,开心,但是效率好低呀,题解区域探索一波,觉得自己是个智障,好家伙直接位运算,有限自动机,真难。就贴一下自己写的代码吧。

程序代码

class Solution {
    public int singleNumber(int[] nums) {
        	HashMap<Integer,Integer> hash = new HashMap<>();
		for (int i = 0; i < nums.length; i++) {
//			判断是否存在,不存在加入
			if(hash.get(nums[i])==null) {
				hash.put(nums[i], 1);
			}else {
				hash.put(nums[i], hash.get(nums[i])+1);
			}
		}
		
		for(Integer a:hash.keySet()) {
			if(hash.get(a)==1) return a; 
		}
		return 0;
    }
}

题目来源

LeetCode,剑指Offer

TAG

网友评论

共有访客发表了评论
请登录后再发布评论,和谐社会,请文明发言,谢谢合作! 立即登录 注册会员