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

只出现一次的数字 II

时间:2024-06-06 19:54:54浏览次数:18  
标签:一次 数字 nums int II num 哈希 numsList

题目描述

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

你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。

 

示例 1:

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

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

提示:

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

题目解析

这个题目可以使用位运算来解决,但我的位运算功力还没有深到能够解决3个相同的数字出现。所以在这里我选择使用哈希表来解决这个问题,哈希表有一个优势就是逻辑上来说比较直观,但是因为需要遍历哈希表所以运行效率肯定是要受到不小的影响的。
首先我们应该能想到这道题的关键在于数字和它的出现次数,所以我们可以使用HashMap来存储一个数字和它的出现次数。

Map<Integer,Integer> numsList = new HashMap<>();

每次我们第一次遇到一个数字的时候,就在Map里面存一个数字,并将它的出现次数设置为1,如果出现过第n(n>0)次,就将出现次数+1。
最后我们遍历哈希表看谁的出现次数为1,就可以得到目标数字了。

代码展示

class Solution {
    public int singleNumber(int[] nums) {
        Map<Integer,Integer> numsList = new HashMap<>();
        for(int num:nums){
            if(numsList.containsKey(num)){
                int value = numsList.get(num);
                value++;
                numsList.put(num,value);
            }else{
                numsList.put(num,1);
            }
        }
        int ans = 0;
        for (Map.Entry<Integer,Integer> entry: numsList.entrySet()){
            int num = entry.getKey();
            int occ = entry.getValue();
            if(occ == 1){
                ans = num;
                break;
            }
        }

        return ans;
    }
}

标签:一次,数字,nums,int,II,num,哈希,numsList
From: https://www.cnblogs.com/Radioactive/p/18235919

相关文章

  • 力扣:1103. 分糖果 II
    1103.分糖果II排排坐,分糖果。我们买了一些糖果 candies,打算把它们分给排好队的 n=num_people 个小朋友。给第一个小朋友1颗糖果,第二个小朋友2颗,依此类推,直到给最后一个小朋友 n 颗糖果。然后,我们再回到队伍的起点,给第一个小朋友 n +1 颗糖果,第二个小朋友......
  • 51单片机独立按键控制流水灯,按一次左流水,再按一次反向流水
    1、功能描述独立按键控制流水灯,按一次左流水,再按一次反向流水2、实验原理单片机的I/O口可以通过编程设置为输入或输出模式。在流水灯实验中,我们将I/O口配置为输出模式,用于控制LED灯的亮灭。同时,我们还需要一个输入口来检测按键的状态,以实现按键控制流水灯的功能。流水灯的效......
  • 51单片机独立按键控制LED灯,按键按一次亮,再按一次灭
    1、功能描述独立按键控制LED灯,按键按一次亮,再按一次灭2、实验原理轻触按键:相当于是一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动米实现接通和断开;独立按键原理图如下:其在MCU上的位置如下所示:由上面两张图可以知道,独立按键......
  • P1182 数列分段 Section II
    数列分段SectionII题目描述对于给定的一个长度为$N$的正整数数列$A_{1\simN}$,现要将其分成$M$($M\leqN$)段,并要求每段连续,且每段和的最大值最小。关于最大值最小:例如一数列$4\2\4\5\1$要分成$3$段。将其如下分段:$$[4\2][4\5][1]$$第一段和为$6$,第$2$段......
  • 数字化“智慧导购”:新时代的社交“带货王”|商派
    导购作为品牌DTC的核心触点,让用户的整个购物流程有了更多的人情味,可以有效提升用户的满意度和品牌粘性。计三勇在一次行业论坛公开演讲中指出,无论是做品牌私域流量运营,还是帮助门店开展社交电商,零售企业都应该通过数字化工具的赋能,让每个导购掌握数字化经营客户的能力,掌握社......
  • 开源低代码平台技术为数字化转型赋能!
    实现数字化转型升级是很多企业未来的发展趋势,也是企业获得更多发展商机的途径。如何进行数字化转型?如何实现流程化办公?这些都是摆在客户面前的实际问题,借助于开源低代码平台技术的优势特点,可以轻松助力企业降低开发成本、提高开发效率,获得高效快速发展。了解低代码技术平台的客户......
  • 新质生产力赋能公司治理,以数字化引领董事会管理效率
    什么是新质生产力?新质生产力是由技术革命性突破、生产要素创新性配置、产业深度转型升级而催生的当代先进生产力,它以劳动者、劳动资料、劳动对象及其优化组合的质变为基本内涵,以全要素生产率提升为核心标志。新质生产力、数字化与公司治理近日,深圳证券交易所、上海证券交易......
  • 农业科技的丰收革命:农情监测系统引领农业数字化转型的浪潮
    在科技飞速发展的今天,农业领域正经历着一场深刻的智能化、数字化变革。在这场变革中,农情监测系统以其独特的优势,成为推动农业转型升级的重要力量。它利用先进的物联网技术和云端平台,实现了对农业环境、病虫害等关键信息的实时、精准监测,为农业生产提供了强大的数据支持。  首......
  • CS8406国产替代DP7406数字音频发射芯片I2S转S/PDIF/AES同轴输出芯片
    192K数字音频应用采样率192khz,能将192,000hz以下的频率都录下来,而且对声波每秒连续采样192,000次。在回放的时候,这192,000个采样点按顺序播放,从而还原原来的声音。过采样技术除了能让很微观的角度上让声音更连续以外,在对声音进行一些特殊处理时,更不容易失真/出现杂音。48k......
  • FPGA数字信号处理之:小波变换算法的实现
    一、定义        小波变换(wavelettransform,WT)是一种新的变换分析方法,它继承和发展了短时傅立叶变换局部化的思想,同时又克服了窗口大小不随频率变化等缺点,能够提供一个随频率改变的“时间-频率”窗口,是进行信号时频分析和处理的理想工具。它的主要特点是通过变换能够......