首页 > 其他分享 >137. 只出现一次的数字 II

137. 只出现一次的数字 II

时间:2023-10-15 22:33:27浏览次数:38  
标签:map 数字 nums int sum II num 137 integer

题目

题解

方法一

  • 直接用哈希表出现 3 次则从哈希表移除,最后剩下的就是结果
class Solution {
    public int singleNumber(int[] nums) {

        Map<Integer, Integer> map = new HashMap<>();
        for (int num : nums) {
            Integer integer = map.getOrDefault(num, 0);
            if (integer == 2) {
                map.remove(num);
            } else {
                map.put(num, integer + 1);
            }
        }
        for (Integer i : map.keySet()) {
            return i;
        }
        return 0;
    }
}

方法二

  • 其余元素都出现三次,其中某个元素只出现一次,将每个元素都转化为二进制,则可能的结果为 4 个数都相同或者 3 个数都相同
  • 同一位结果可能为 0000111100011110
  • 通过位运算得出所有该位的和,对 3 进行取模则得出结果数字该位的值
class Solution {
    public int singleNumber(int[] nums) {
        int res = 0;
        for (int i = 0; i < 32; i++) {
            int sum = 0;
            for (int num : nums) {
                // 最后一位的值
                sum += num >> i & 1;
            }
            // 将不同的数补到 res 后面
            res |= sum % 3 << i;
        }
        return res;
    }
}

本文由mdnice多平台发布

标签:map,数字,nums,int,sum,II,num,137,integer
From: https://www.cnblogs.com/liuzhihang/p/17766362.html

相关文章

  • 136. 只出现一次的数字
    1.题目简介2.题解本题思路参考了某位大大的题解,链接:https://leetcode.cn/problems/single-number/solutions/5118/xue-suan-fa-jie-guo-xiang-dui-yu-guo-cheng-bu-na-y/2.1数组/哈希表解法思路这里很容易想法就是成对存储:数(键)和数出现的次数(键值),所以使用数组和哈希表存储......
  • 【gdb】打印ASCII和宽字符字符串
    打印ASCII和宽字符字符串1.例子:#include<stdio.h>#include<wchar.h>intmain(void){charstr1[]="abcd";wchar_tstr2[]=L"abcd";return0;}用gdb调试程序时,可以使用“x/s”命令打印ASCII字符串。以上面程序为例:[root@node0......
  • 数字游戏学习对学生数学学习自我效能感、动机、焦虑和成绩的影响
    (Effectsofdigitalgame-basedlearningonstudents’selfefficacy,motivation,anxiety,andachievementsinlearningmathematics) BeijingNormalUniversity2014一、摘要研究目的:本研究在电子书上开发了一个基于数学游戏的学习环境,帮助儿童减少数学焦虑,提高数学学......
  • 罗马数字转阿拉伯数字
    罗马数字转阿拉伯数字目录问题的回答个人理解基于AI学号转换程序部分问题的回答个人理解罗马数字不是位置计数,基于对这两篇文章的理解罗马数字技术规则和位置计数法可总结为:,而罗马数字是不同数字间的和差运算,不属于位置计数法缺点:罗马数字没有表示零的数字,同时书写繁难,不能进......
  • 代码随想录算法训练营-动态规划-3-(0-1背包问题)|416. 分割等和子集、1049. 最后一块石
    416.分割等和子集01背包的递推公式为:dp[j]=max(dp[j],dp[j-weight[i]]+value[i]);如果dp[j]==j说明,集合中的子集总和正好可以凑成总和j,理解这一点很重要。1classSolution:2defcanPartition(self,nums:List[int])->bool:3_sum=......
  • 力扣---137. 只出现一次的数字 II
    给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次。请你找出并返回那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。 示例1:输入:nums=[2,2,3,2]输出:3示例2:输入:nums=[0,1,0,1,0,1,99]......
  • 136. 只出现一次的数字
    题目题解考察的是位运算——异或(^),相同为0,不同为11^0=1,1^1=0则直接对数据所有元素执行^操作,最终的就是结果classSolution{publicintsingleNumber(int[]nums){intres=0;for(intnum:nums){res=res^num;......
  • 13. 罗马数字转整数
    1.题目介绍罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符数值I1V5X10L50C100D500M1000例如,罗马数字2写做II,即为两个并列的1。12写做XII,即为X+I......
  • Socks5代理与代理IP在数字世界的应用
    随着数字化浪潮的席卷,网络工程师的角色日益关键,他们需要应对跨界电商、爬虫数据采集、出海业务拓展以及游戏体验优化等多方面的挑战。在这一场数字变革的浪潮中,Socks5代理和代理IP成为了网络工程师手中的得力利器,帮助他们处理各种复杂的技术问题。本文将深入探讨这两种技术在数字世......
  • Socks5代理与代理IP在数字世界的应用
    随着数字化浪潮的席卷,网络工程师的角色日益关键,他们需要应对跨界电商、爬虫数据采集、出海业务拓展以及游戏体验优化等多方面的挑战。在这一场数字变革的浪潮中,Socks5代理和代理IP成为了网络工程师手中的得力利器,帮助他们处理各种复杂的技术问题。本文将深入探讨这两种技术在数字世......