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

news2024/11/17 5:28:49

题目链接

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

题目描述

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

示例 1:

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

示例 2:

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

提示:

  • 1 < = n u m s . l e n g t h < = 3 ∗ 1 0 4 1 <= nums.length <= 3 * 10^4 1<=nums.length<=3104
  • − 2 31 < = n u m s [ i ] < = 2 31 − 1 -2^{31} <= nums[i] <= 2^{31} - 1 231<=nums[i]<=2311
  • nums中,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次

解法一:

第一次遍历用一个哈希表记录数组中元素的出现次数,第二次遍历就找到那个出现次数为 1 的元素,返回该元素即可。

时间复杂度: O ( n ) O(n) O(n)

空间复杂度: O ( n ) O(n) O(n)

C++代码:

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        unordered_map<int,int> cnt;
        for(auto &x:nums) cnt[x]++;
        int ans = -1;

        for(auto &[k,v]:cnt){
            if(v == 1){
                ans = k;
                break;
            }
        }
        return ans;
    }
};

Java代码:

class Solution {
    public int singleNumber(int[] nums) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int x : nums) {
            map.put(x, map.getOrDefault(x, 0) + 1);
        }
        for (int x : map.keySet()) {
            if (map.get(x) == 1) return x;
        }
        return -1;
    }
}

解法二:

因为数组中的每一个元素都是32位整数,所以我们可以用一个长度为32 的 bit 数组来记录所有的元素。

因为数组中只有一个元素只出现了一次,其他都出现了三次。

所以如果我们对 b i t [ i ] ( 0 < = i < 32 ) bit[i] (0<=i<32) bit[i](0<=i<32) 都 %3,剩下的就是那个只出现一次的数字的二进制位了

例如:

nums = [2,2,2,3,3,3,5]

在这里插入图片描述
在这里插入图片描述

时间复杂度: O ( n ) O(n) O(n)

空间复杂度: O ( 1 ) O(1) O(1)

C++代码:

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        vector<int> bit(32);
        for(auto &x:nums){
            for(int i = 0;i < 32;i++){
                bit[i] += (x >> i) & 1;
            }
        }
        
        int ans = 0;

        for(int i = 0;i < 32;i++){
            ans += (bit[i] % 3) << i;
        }

        return ans;
    }
};

Java代码:

class Solution {
    public int singleNumber(int[] nums) {
        int[] bit = new int[32];
        for(int x:nums){
            for(int i = 0;i < 32;i++){
                bit[i] += (x >> i) & 1;
            }
        }

        int ans = 0;

        for(int i = 0;i < 32;i++){
            ans += (bit[i] % 3) << i;
        }

        return ans;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/186878.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode042之接雨水(相关话题:动态规划,单调栈)

题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,…

vue复习+vuex

一、vue.js的基本指令1、Vue的作用&#xff1a;快速的构建前端页面&#xff08;封装了html、css、js&#xff09;,以工程化的方式进行前端的开发2、Vue的核心&#xff1a;&#xff08;1&#xff09;组件化&#xff1a;&#xff08;2&#xff09;数据双向绑定&#xff08;3&…

linux基本功系列之sudo命令实战一

文章目录一.sudo命令介绍二. 语法格式及常用选项三. sudo配置文件详解3.1 sudo的配置文件3.2 配置文件注释3.3 sudo授权规则四. sudo常用参数实战 参考案例4.1 查看当前用户有哪些被sudo服务授权的命令4.2 结束密码的有效期4.3 限制用户的权限总结前言&#x1f680;&#x1f68…

3分钟解读ISO27001信息安全管理体系

一、什么是ISO27001 ISO27001是信息安全管理体系认证&#xff0c;对应国标号GB/T22080-2016&#xff0c;企业建立ISO27001体系能有效保证企业在信息安全领域的可靠性&#xff0c;降低企业泄密风险&#xff0c;更好的保存核心数据和重要信息。 信息安全对每个企业都是非常重要的…

Spring Cloud 高频面试题25连环炮!

今天给大家分享SpringCloud高频面试题。 Spring Cloud核心知识总结 下面是一张Spring Cloud核心组件关系图&#xff1a; 从这张图中&#xff0c;其实我们是可以获取很多信息的&#xff0c;希望大家细细品尝。 话不多说&#xff0c;我们直接开始 Spring Cloud 连环炮。 连环…

【算法基础】链表与邻接表

在机试、面试中,使用链表通常不是结构体构建Node,申请新节点new操作,因为速度过慢,申请10w量级的空节点就已经超时了。因为在算法竞赛中,常常使用 一、数组模拟单链表【⭐邻接表(n个链表)⭐】 邻接表(n个链表)最主要的应用是存储图和存储树。 建表、插入、删除操作…

ThinkPad R490电脑开机之后无线重启怎么重装系统?

ThinkPad R490电脑开机之后无线重启怎么重装系统&#xff1f;有用户使用ThinkPad R490电脑正常开机的情况下&#xff0c;出现了系统自动重启的情况&#xff0c;无法正常的使用电脑了。遇到这个情况怎么去重装一个新的电脑系统&#xff0c;恢复正常使用呢&#xff1f;来看看以下…

17. datetime模块

python 标准库中的 datetime 模块提供了和日期和时间相关的类。 类功能datetime.date以年、月和日表示日历中的日期datetime.time以小时、分钟和秒表示一天中的时间datetime.datetime以年、月、日、小时、分钟和秒表示日期和时间datetime.timedelta表示一个时间段&#xff0c;…

什么蓝牙耳机便宜音质好?平价高音质蓝牙耳机推荐

随着蓝牙耳机的品类越来越多&#xff0c;人们在选择时有了更大的空间。作为蓝牙耳机选择的两大参考要素&#xff0c;性价比和音质的出现频率相对来说会比较高。那么&#xff0c;什么蓝牙耳机便宜音质好&#xff1f;下面&#xff0c;我来给大家推荐几款平价高音质的蓝牙耳机&…

初探机器学习-梯度下降法求解最优值

文章目录什么是模型如何训练模型1、拟定假设函数2、损失函数和代价函数3、关于导数和偏导数4、使用梯度下降法求解最优值5、回顾总结三、衡量一个模型的好坏模型验证1、简单交叉验证2、K 折交叉验证3、留一交叉验证过拟合什么是模型 只要是从事IT行业&#xff0c;想必都对机器…

基于Android的房屋租赁系统

需求信息&#xff1a; 房东客户端&#xff1a; 1&#xff1a;注册登录&#xff1a;使用分配的账号进行登录&#xff1b; 2&#xff1a;发布房源&#xff1a;房主可以发布自己的房源信息&#xff1b; 3&#xff1a;预约信息&#xff1a;查看租客的预约看房信息&#xff1b; 4&am…

sqllineage解析FineBI数据集导入Datahub生成血缘

需求 当前数仓架构流程图如下图所示&#xff0c;不支持端到端数据血缘&#xff0c;数据异常排查及影响分析比较被动&#xff0c;需要端到端数据血缘及元数据管理。 业务系统&#xff1a;各种制造业业务系统&#xff08;高速迭代、重构、新建中&#xff09; 数仓开发平台&…

jChartFX Plus JavaScript 7.6.7367 Crack

jChartFX Plus包括 jChartFX 的所有功能和其他画廊类型、高级商业智能功能和用于您的 Web 或移动应用程序的仪表板功能。新的 jChartFX Plus 为您提供额外的能力来开发完整的商业仪表板和商业智能应用程序 在最新的 jChartFX Plus 中&#xff0c;我们引入了象形图和象形图条控件…

仿牛客论坛项目Docker部署(ElasticSearch+Redis+Kafka+MySQL)

仿牛客论坛项目项目部署(docker)1.ElasticSearch安装本体安装ik插件2.Zookeeper3.Kafka测试是否启动成功4.MySQL启动mysql测试载入数据5.Redis6.DockerFile构建Java8项目部署成功参考项目部署(docker) 1.ElasticSearch 安装本体 mkdir -p /opt/docker/es/plugins #创建插件文…

jspssm小区车位物业管理系统

目 录 1 绪论 1 1.1 研究背景 1 1.2 小区物业管理系统的现状 1 1.3 系统实现的功能 1 1.4 小区物业管理系统的特点 2 1.5 本文的组织结构 2 1.6 系统分析 2 2 开发技术与环境配置 3 2.1 ssm框架 3 2.2 JSP技术 3 2.3 JavaScript 4 …

给Docker NodeRed 设置登陆账户

第一步&#xff1a;运行Nodered docker run -it --rm -e TZ"Asia/Shanghai" -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red 进入web页面没有显示用户头像 第二步&#xff1a;进入容器 docker exec -it mynodered /bin/bash 退到根目录 …

AI算法工程师 | 09机器学习-概率图模型(三)隐马尔可夫模型 HMM

目录机器学习 - 概率图模型 之 隐马尔可夫模型 HMM一、马尔科夫链二、HMM 的基本概念1、HMM 背景与定义2、HMM 的两个基本假设3、确定 HMM 的两个空间和三组参数三、HMM 三个基本问题 | 导图四、HMM 相关算法1、前向算法2、维特比&#xff08;Viterbi&#xff09;算法五、案例&…

小红书购物笔记是什么

小红书购物笔记是什么 新手必看&#xff5c;12个小红书隐藏功能及操作玩法❗ #小红书#自媒体#新媒体#小红书隐藏功能#小红书运营#新手做小红书#小红书隐藏玩法#自媒体运营 hello&#xff0c;大家好&#xff0c;如果你刚好刷到这篇文章&#xff0c;说明你也是想做或正在做小红…

【内网安全】——msf木马生成教程

作者名&#xff1a;白昼安全主页面链接&#xff1a; 主页传送门创作初心&#xff1a; 一切为了她座右铭&#xff1a; 不要让时代的悲哀成为你的悲哀专研方向&#xff1a; web安全&#xff0c;后渗透技术每日emo&#xff1a; 钱真的是万能的一、msfvenom基本使用 1、–p (- -pay…

【目标检测论文解读复现NO.28】基于改进YOLO v5的电厂管道油液泄漏检测

前言此前出了目标改进算法专栏&#xff0c;但是对于应用于什么场景&#xff0c;需要什么改进方法对应与自己的应用场景有效果&#xff0c;并且多少改进点能发什么水平的文章&#xff0c;为解决大家的困惑&#xff0c;此系列文章旨在给大家解读最新目标检测算法论文&#xff0c;…