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

137. 只出现一次的数字 II

时间:2023-10-15 22:46:17浏览次数:27  
标签:map return 运算 II num 137 pair 数字

1.题目介绍

2.题解

2.1 哈希表

思路

同本系列题I,不过多赘述

代码

class Solution {
public:
    int singleNumber(std::vector<int>& nums) {
        std::unordered_map<int,int> map;
        for (int num:nums){
            map[num]++;
        }
        for (auto pair:map){
            if (pair.second == 1) return pair.first;
        }
        return 0;
    }
};

结果展示

空间代价不是很理想

2.2 依次确定每一个二进制位

思路

这里的思路要类比上一题中的异或运算(排除所有出现偶次的数,使用了异或运算的性质)
这里重复出现三次,是一个三的倍数,如何利用好这个性质?
1.首先思考整体除三或者对其用3求余,发现了一个问题,用3求余的时候,确实能求出0,1,2,但是这里的数可能是n*3 + (0,1,2),无法确定这个n?
2.我们就在想能不能消除这个n,最好把这个n拆成n次一位一位的运算就好了,那么每一位我都能确定是0,1,2(或者更少的数),之后统一再变回来。

换句话说,如果这里的进制位数小于3,比如像二进制

标签:map,return,运算,II,num,137,pair,数字
From: https://www.cnblogs.com/trmbh12/p/17766369.html

相关文章

  • 137. 只出现一次的数字 II
    题目题解方法一直接用哈希表出现3次则从哈希表移除,最后剩下的就是结果classSolution{publicintsingleNumber(int[]nums){Map<Integer,Integer>map=newHashMap<>();for(intnum:nums){Integerinteger=map.getOrDe......
  • 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成为了网络工程师手中的得力利器,帮助他们处理各种复杂的技术问题。本文将深入探讨这两种技术在数字世......