【每日一题】只出现一次的数字 II

news2024/11/25 10:04:23

文章目录

  • Tag
  • 题目来源
  • 题目解读
  • 解题思路
    • 方法一:位运算
  • 写在最后

Tag

【位运算】【数组】【2023-10-15】


题目来源

137. 只出现一次的数字 II


题目解读

找出数组中仅出现一次的数字,其余数字仅出现三次。要求线性时间复杂度求解。


解题思路

本题的朴素方法是利用哈希表统计数组中每个数字出现的次数,出现的次数仅为 1 的那个数字是我们需要返回的答案。该方法的时间、空间复杂度均为 O ( n ) O(n) O(n)

接下来将介绍一种空间复杂度为 O ( 1 ) O(1) O(1) 的位运算方法。

方法一:位运算

数组中的int整型元素的范围是32位,每一个32位的int整型数据都可以用32二进制来表示,每一位上要么是 0 要么是 1

我们遍历32位的每一个位 i,统计数组中 i 位上的 01 的数量,数组中的三个一样的数的这一位的 01 的数量一定是 3 的倍数,如果此时统计的数组中 i 位上的 01 的数量是 3 的倍数还余 1,那多出来的数量 1 一定是数组中仅出现一次的数(称为答案)的 i 位的数,也就是说答案第 i 位为 1

实现代码

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int res = 0;
        for (int i = 0; i < 32; ++i) {
            int cnt = 0;
            for (int num : nums) {
                cnt += ((num >> i) & 1);
            }
            if (cnt % 3) {
                res |= (1 << i);
            }
        }
        return res;
    }
};

复杂度分析

时间复杂度: O ( n l o g C ) O(nlogC) O(nlogC) n n n 为数组 nums 的长度, C C C 是数据的范围,本题中 l o g C = 32 logC=32 logC=32

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


写在最后

如果文章内容有任何错误或者您对文章有任何疑问,欢迎私信博主或者在评论区指出 💬💬💬。

如果大家有更优的时间、空间复杂度方法,欢迎评论区交流。

最后,感谢您的阅读,如果感到有所收获的话可以给博主点一个 👍 哦。

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

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

相关文章

基于nodejs+vue教学辅助管理系统

学生&#xff1b;首页、个人中心、本课程设计了线上教学辅助系统 ,学生可以此系统实现在线学习&#xff0c;作业提交管理、作业成绩管理。随着社会的快速发展&#xff0c;计算机的影响是全面且深入的。教师&#xff1a;首页、个人中心、课程信息管理、教学资料管理、作业信息管…

C++笔记之std::future的用法

C笔记之std::future的用法 code review! 文章目录 C笔记之std::future的用法1.C中std::future和std::async总是一起出现吗&#xff1f;2.主要特点和用法3.一个完整的例子4.std::future 存放的是一个结果吗&#xff1f;5.cppreference——std::future 1.C中std::future和std::a…

NCV7724DQBR2G车规级半桥电机驱动芯片-专为汽车,工业自动化应用提供完美解决方案

车规级半桥电机驱动芯片是一种用于驱动直流电机的芯片&#xff0c;常用于电动汽车、电动自行车等领域。它可以控制电机的转速和方向&#xff0c;并且具有过流保护、过温保护等功能&#xff0c;可以保证电机的安全运行。 NCV7724DQBR2G是一款车规级八通道半桥驱动器&#xff0c;…

pdf格式的简历中的照片太小,如何修改图片的大小

问题描述&#xff1a;在使用一些在线版生成软件制作简历时&#xff0c;比如使用超级简历制作的简历存在着一个照片的尺寸比较小。如何去修改pdf中的证件照大小。 解决办法&#xff1a;使用一些在线编辑pdf的软件&#xff0c;比如我随便找了一个&#xff08;在线编辑pdf&#x…

SpringCloud-Config

一、介绍 &#xff08;1&#xff09;服务注册中心 &#xff08;2&#xff09;管理各个服务上的application.yml&#xff0c;支持动态修改&#xff0c;但不会影响客户端配置 &#xff08;3&#xff09;一般将application.yml文件放在git上&#xff0c;客户端通过http/https方式…

【MST】 CF1108 F

Problem - 1108F - Codeforces 题意 思路 先看样例 这里的 MST&#xff0c;是把边排序之后合并至权值为3 权值为3的两条边&#xff0c;选其中一条即可&#xff0c;但是不能两条都选&#xff0c;这样会形成环 这启示我们&#xff0c;我们要操作的是和Kruskal的最后一条边权值…

【Excel】【latex】将EXCEL中单元格的计算关系还原为公式,用c#重构

在excel中&#xff0c;将很多个单元格&#xff0c;及其内部的公式&#xff0c;用文本的形式复制出来 Ctrl ~将 Excel 切换到公式视图&#xff0c;可以看到单元格中的公式&#xff0c;而不是公式的结果。 像平常一样复制和粘贴单元格。粘贴时&#xff0c;会看到的是单元格中的…

python+django高校教室资源预约管理系统lqg8u

技术栈 后端&#xff1a;pythondjango 前端&#xff1a;vueCSSJavaScriptjQueryelementui 开发语言&#xff1a;Python 框架&#xff1a;django/flask Python版本&#xff1a;python3.7.7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;PyChar…

力扣刷题 day14:10-14

1.超级丑数 超级丑数 是一个正整数&#xff0c;并满足其所有质因数都出现在质数数组 primes 中。 给你一个整数 n 和一个整数数组 primes &#xff0c;返回第 n 个 超级丑数 。 题目数据保证第 n 个 超级丑数 在 32-bit 带符号整数范围内。 方法一&#xff1a;动态规划 #…

P1443 马的遍历

#include <iostream> #include <queue> using namespace std; #define M 400 int arr[M 5][M 5]; typedef struct Node {int x, y; } Node; //将马能走的8个方向封装成一个二维数组 int dir[8][2] {{2, 1}, {2, -1}, {-2, 1}, {-2, -1},{1, 2}, {-1, 2}, {1, -2…

保姆级搭建Mysql 并进行视图可视化操作

安装MySQL数据库 选择mysql5.7.36_x32.msi”&#xff0c;双击运行&#xff0c;如下图所示&#xff1a; 在此窗口中&#xff0c;选择“Custom”选项&#xff0c;点击“Next>”进入下一步&#xff1b; 在此窗口中&#xff0c;选择号下的MySQL Server 5.7.36 – x64&…

windbg分析 IRQL_NOT_LESS_OR_EQUAL 蓝屏问题

国庆回来后&#xff0c;电脑频繁出现蓝屏问题。 最初以为是驱动问题。 包括&#xff1a; 蓝牙耳机适配器的驱动。 机械键盘的驱动。 最初为了使用蓝牙耳机&#xff0c;安装了蓝牙适配器。 使用方法&#xff1a; 右击禁用英特尔后&#xff0c;重新拔插适配器&#xff0c;重…

【HTML+REACT+ANTD 表格操作】处理(改变)数据,改变DOM

博主&#xff1a;_LJaXi 专栏&#xff1a; React | 前端框架 主要是一些表格DOM操作&#xff0c;数据更换 个人向 HTML <!DOCTYPE html> <html lang"en"> <link> <meta charset"UTF-8" /> <meta name"viewport" con…

MacBook/MacOS如何更新到指定的版本

背景 现在是A版本&#xff0c;想要更新到B&#xff0c;而目前能最新更新到C。 是可以做到的&#xff0c;不一定更新就得更新到最新的。 只要下载好B之后更新即可。 方法 思路是下载好目标的版本后更新&#xff0c;这里可以下载&#xff1a; https://support.apple.com/zh-…

算法练习13——跳跃游戏II

LeetCode 45 跳跃游戏 II 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回…

VS2015编译Qt工程发生MSB4018错误完整解决过程

一、错误产生环境 操作系统&#xff1a;Windows10 开发工具&#xff1a;VS2015企业版 Qt版本&#xff1a;Qt5.7.1 64位 二、错误内容 MSB4018 “VCMessage”任务意外失败。 System.FormatException: 索引(从零开始)必须大于或等于零&#xff0c;且小于参数列表的大小。 …

Compose 组件 - 分页器 HorizontalPager、VerticalPager

一、概念 类似于 ViewPager&#xff0c;1.4 版本之前需要借助 accompanis 库&#xff0c;底层基于 LazyColumn、LazyRow 实现&#xff0c;在使用上也基本相同。默认情况下 HorizontalPager 占据屏幕的整个宽度&#xff0c;VerticalPager 会占据整个高度。 fun HorizontalPager(…

@ConditionalOnProperty 用法

文章目录 前言一、使用场景二、使用步骤1.错误示例2.ConditionalOnProperty的解决方案 总结 前言 ConditionalOnProperty 是Spring Boot中的条件注解&#xff0c;它的核心功能是通过属性名以及属性值来实现的&#xff0c;常被用于判断某个属性是否存在&#xff0c;然后决定某个…

049:mapboxGL本地上传WKT文件,在地图上显示图形

第049个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中本地上传wkt文件,先将wkt转换为geojson格式,然后通过mapbox加载geojson数据的方法解析,在地图上显示图形。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示…

SQLite4Unity3d安卓 在手机上创建sqlite失败解决

总结 要在Unity上运行一次出现库&#xff0c;再打包进APK内 问题 使用示例代码的创建库 var dbPath string.Format("Assets/StreamingAssets/{0}", DatabaseName); #else// check if file exists in Application.persistentDataPathvar filepath string.Format…