剑指 Offer 56 - II. 数组中数字出现的次数 II

在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。

示例 1:

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

输入:nums = [9,1,7,9,7,9,7]
输出:1

限制:

1 <= nums.length <= 10000
1 <= nums[i] < 2^31

解题思路

对于所有元素的二进制位的第i位而言,出现1的次数必然为3*n+1或者3 *n,因为只出现一次的那个数字在该位上可能为1或者0,但是其他数字都出现3次,所以出现1的次数必然为3的倍数。

因此我们只需要判断该位上,出现1的次数是否为3*n+1,就可以知道只出现一次的那个数字在该位是否为1,进而还原出整个数字。

代码

class Solution {public int singleNumber(int[] nums) {int res=0;for (int i=0;i<31;i++){int cur=0;for (int j=0;j<nums.length;j++) {cur+=(nums[j]&1);nums[j]>>=1;}if(cur%3==1){res|=(1<<i);}}return res;}
}

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

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

相关文章

Java逆向基础之AspectJ的获取成员变量的值

注意&#xff1a;由于JVM优化的原因&#xff0c;方法里面的局部变量是不能通过AspectJ拦截并获取其中的值的&#xff0c;但是成员变量可以在逆向中&#xff0c;我们经常要跟踪某些类的成员变量的值&#xff0c;这里以获取ZKM9中的qs类的成员变量g为例进行说明在StackOverFlow上…

盐噪声和胡椒噪声的区别_为什么加一点盐对您的密码很有用(但不包括胡椒粉!)

盐噪声和胡椒噪声的区别A brief note - this article is about the theory of how to crack hashed passwords. Understanding how cybercriminals execute attacks is extremely important for understanding how to secure systems against those types of attacks. 简要说明…

【Luogu1393】动态逆序对(CDQ分治)

【Luogu1393】动态逆序对&#xff08;CDQ分治&#xff09; 题面 题目描述 对于给定的一段正整数序列&#xff0c;我们定义它的逆序对的个数为序列中ai>aj且i < j的有序对(i,j)的个数。你需要计算出一个序列的逆序对组数及其删去其中的某个数的逆序对组数。 输入输出格式 …

iOS底层原理探究-Runloop

Runloop 1. 概述 一般来说&#xff0c;一个线程只能执行一个任务&#xff0c;执行完就会退出&#xff0c;如果我们需要一种机制&#xff0c;让线程能随时处理时间但并不退出&#xff0c;那么 RunLoop 就是这样的一个机制。Runloop是事件接收和分发机制的一个实现。 RunLoop实际…

p2020开发_2020年最佳开发者社区

p2020开发If you want to grow as a developer, I cant over-emphasize the benefits of joining a developer community. There are many advantages, from peer-programming to sharing knowledge, mentorship, sharing support, sharing tools, code reviews, answering que…

leetcode 1838. 最高频元素的频数

元素的 频数 是该元素在一个数组中出现的次数。 给你一个整数数组 nums 和一个整数 k 。在一步操作中&#xff0c;你可以选择 nums 的一个下标&#xff0c;并将该下标对应元素的值增加 1 。 执行最多 k 次操作后&#xff0c;返回数组中最高频元素的 最大可能频数 。 示例 1&…

Deepin系统手动安装oracle jdk8详细教程

Deepin系统手动安装oracle jdk8详细教程 oracle官网下载jdk压缩包&#xff0c;使用 sudo tar -zxf jdk***解压文件&#xff0c;我放在在了home/diy/java/jdk路径下。 jdk文件路径&#xff1a;/home/diy/java/jdk/jdk1.8.0_152 JDK环境变量配置 修改配置文件 sudo vi /etc/profi…

Spark 键值对RDD操作

https://www.cnblogs.com/yongjian/p/6425772.html 概述 键值对RDD是Spark操作中最常用的RDD&#xff0c;它是很多程序的构成要素&#xff0c;因为他们提供了并行操作各个键或跨界点重新进行数据分组的操作接口。 创建 Spark中有许多中创建键值对RDD的方式&#xff0c;其中包括…

无服务器架构_如何开始使用无服务器架构

无服务器架构Traditionally, when you wanted to build a web app or API, you’d usually have to spend significant time and effort managing servers and ensuring your app scales up to handle large request volumes. Serverless is a cloud computing model which let…

WPF中的动画——(一)基本概念

原文:WPF中的动画——&#xff08;一&#xff09;基本概念WPF的一个特点就是支持动画&#xff0c;我们可以非常容易的实现漂亮大方的界面。首先&#xff0c;我们来复习一下动画的基本概念。计算机中的动画一般是定格动画&#xff0c;也称之为逐帧动画&#xff0c;它通过每帧不同…

cloud 异步远程调用_异步远程工作的意外好处-以及如何拥抱它们

cloud 异步远程调用In this article, Ill discuss the positive aspects of being a little out of sync with your team.在本文中&#xff0c;我将讨论与您的团队有点不同步的积极方面。 So you’ve started working from home.因此&#xff0c;您已经开始在家工作。 There …

linux 问题一 apt-get install 被 lock

问题&#xff1a; sudo apt-get install vim E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it? 解决&#xff1a; sudo rm /var/cac…

工信部高级软件工程师_作为新软件工程师的信

工信部高级软件工程师Dear Self, 亲爱的自我&#xff0c; You just graduated and you are ready to start your career in the IT field. I cannot spoil anything, but I assure you it will be an interesting ride. 您刚刚毕业&#xff0c;就可以开始在IT领域的职业了。 我…

Python高级网络编程系列之基础篇

一、Socket简介 1、不同电脑上的进程如何通信&#xff1f; 进程间通信的首要问题是如何找到目标进程&#xff0c;也就是操作系统是如何唯一标识一个进程的&#xff01; 在一台电脑上是只通过进程号PID&#xff0c;但在网络中是行不通的&#xff0c;因为每台电脑的IP可能都是不一…

多线程编程和单线程编程_生活与编程的平行线程

多线程编程和单线程编程I’m convinced our deepest desire is, by paying the cost of time, to be shown a glimmer of some fundamental truth about the universe. To hear it whisper its lessons and point towards its purpose.我坚信&#xff0c;我们最深切的愿望是通过…

剑指 Offer 67. 把字符串转换成整数

写一个函数 StrToInt&#xff0c;实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。 首先&#xff0c;该函数会根据需要丢弃无用的开头空格字符&#xff0c;直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时&#xff0c…

搭建MSSM框架(Maven+Spring+Spring MVC+MyBatis)

https://github.com/easonjim/ssm-framework 先欠着&#xff0c;后续再进行讲解&#xff1a; 一、Spring内核集成 二、Spring MVC集成 三、MyBatis集成 四、代码生成工具集成 >如有问题&#xff0c;请联系我&#xff1a;easonjim#163.com&#xff0c;或者下方发表评论。<…

4.RabbitMQ Linux安装

这里使用的Linux是CentOS6.2 将/etc/yum.repo.d/目录下的所有repo文件删除 先下载epel源 # wget -O /etc/yum.repos.d/epel-erlang.repo http://repos.fedorapeople.org/repos/peter/erlang/epel-erlang.repo 修改epel-erlang.repo文件&#xff0c;如下图 添加CentOS 的下载源…

freecodecamp_如何对freeCodeCamp文章提供反馈

freecodecampWe at the freeCodeCamp editorial team do our best to ensure articles are as accurate as they can be.我们的freeCodeCamp编辑团队竭尽所能&#xff0c;以确保文章尽可能准确。 Still, we occasionally miss factual inaccuracies, non-functioning code exa…

如何对接oracle 建立pdb

Oracle数据库的结构是一个数据库实例下有许多用户&#xff0c;每一个用户有自己的表空间&#xff0c;即每一个用户相当于MySQL中的一个数据库。不久前下了oracle 12c的数据库&#xff0c;安装之后建user时才知道oracle12c 有一个很大的变动就是引入了pdb可插入数据库&#xff0…