美文网首页
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