美文网首页
AC 剑指 Offer II 004. 只出现一次的数字

AC 剑指 Offer II 004. 只出现一次的数字

作者: itbird01 | 来源:发表于2022-03-30 07:07 被阅读0次

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

示例 1:
输入:nums = [2,2,3,2]
输出:3
示例 2:

输入:nums = [0,1,0,1,0,1,100]
输出:100

提示:
1 <= nums.length <= 3 * 104
-231 <= nums[i] <= 231 - 1
nums 中,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次

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

解法1

遍历数组,hashmap存储,然后再次遍历,找出value==1的元素

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;

class Solution {
    /**
     * @Title: singleNumber
     * @Description: HashMap存储,key为nums[i],value为出现的次数
     * @author: itbird
     * @date 2022年3月29日 下午3:39:09
     * @param nums
     * @return int 时间复杂度: O(N) 空间复杂度: O(N)
     */
    public int singleNumber(int[] nums) {
        HashMap<Integer, Integer> map = new HashMap<>();
        int res = nums[0];
        for (int i = 0; i < nums.length; i++) {
            map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);
        }

        Iterator<Entry<Integer, Integer>> iterator = map.entrySet().iterator();
        int result = 0;
        while (iterator.hasNext()) {
            Entry<Integer, Integer> entry = iterator.next();
            if (entry.getValue() == 1) {
                result = entry.getKey();
            }
        }
        return result;
    }
}

相关文章

网友评论

      本文标题:AC 剑指 Offer II 004. 只出现一次的数字

      本文链接:https://www.haomeiwen.com/subject/xlavjrtx.html