LeetCode: Single Number I II
Given an array of integers, every element appears twice except for one. Find that single one.
这个方法重来没见过,以后估计也不会再见了。。
1 public static int singleNumber(int[] A) { 2 int sum = 0; 3 for (int a : A) { 4 sum ^= a; 5 } 6 return sum; 7 }
本以为不会再见了,不过看到第二个,觉得位操作还是有些应用的。。。。
Given an array of integers, every element appears three times except for one. Find that single one.
还是位操作,但和上面不能一样了。思路是,一个数如果出现了三次,那么这个数的每一位都会出现三次。那么我们可以统计下每一位一共出现多少次,再将这个数模3,剩下的数就是最后只出现一次的数。
具体实施时有两种方法:
1. 按照每一位的顺序进行统计。先统计第一位一共出现多少次,模3后记录下来,然后第二位。。。。。
1 public int singleNumber(int[] A) { 2 int result = 0; 3 for (int i=0; i<32; i++) { 4 int count = 0; 5 for (int a : A) { 6 if (((a>>i)&1) == 1) 7 count++; 8 } 9 result += (count%3)<<i; 10 } 11 return result; 12 }
2. 用三个整形数,one,two,three分别表示出现一次的有哪些位,出现两次的哪些,出现三次的。。。
最后one所代表的就是只出现一次的数。
再更新one,two,three的时候要注意顺序。首先要更新的是two。因为two等于上一次只出现一次的位 & 当前数字包含1的位。所以不能先更新one。
当three中某些位出现1时,把one和two中的相应的位清0。
1 public int singleNumber(int[] A) { 2 int one=0, two=0, three=0; 3 for (int a : A) { 4 two |= one & a; 5 one ^= a; 6 three = one & two; 7 one &= ~three; 8 two &= ~three; 9 } 10 return one; 11 }
转载于:https://www.cnblogs.com/longhorn/p/3525707.html
LeetCode: Single Number I II相关推荐
- LeetCode Single Number I / II / III
[1]LeetCode 136 Single Number 题意:奇数个数,其中除了一个数只出现一次外,其他数都是成对出现,比如1,2,2,3,3...,求出该单个数. 解法:容易想到异或的性质,两个 ...
- [LeetCode]Single Number II
今天室友推荐了一道LeetCode上面的练习题Single Number II,题目大概的意思是有一个整形的数组,里面只有一个数是出现一次的,其他的数都出现了三次,然后让把这个数找出来. 第一眼看到这 ...
- leetcode -day8 Copy List with Random Pointer Single Number I II
五一中间断了几天,开始继续... 1. Copy List with Random Pointer A linked list is given such that each node cont ...
- LeetCode Single Number II(位操作)
问题:给出一个数组,其中只有一个数出现一次,其它数出现三次,找出出现一次的数 思路: 1.统计每位出现的次数,如果mod 3等于1,则将该位置为1,最后即得到出现一次的数. 2.使用三个变量来分别来表 ...
- [Leetcode] single number ii 找单个数
Given an array of integers, every element appears three times except for one. Find that single one. ...
- leetcode - Single Number
今天开始刷leetcode上的题,争取校招前刷过一遍,从AC率最高的题目开始刷,不废话了,看题 题目:Single Number Given an array of integers, every e ...
- leetcode Single Number python
Single Number Given an array of integers, every element appears twice except for one. Find that sing ...
- LeetCode Single Number III(位操作)
问题:给出一个数组,有两个数只出现一次,其它都出现两次. 思路:先对数组求异或,得到两个数异域的结果.然后确定差异的最低位.再将数组与这个差异位作异域,得到其中的一个数.再与异域结果异域后即得到另外一 ...
- LeetCode | Single Number II
Given an array of integers, every element appears three times except for one. Find that single one. ...
最新文章
- c++成员函数的重载、覆盖、隐藏区别
- java 发送cookie_Java如何在Servlet中发送cookie?
- 2020年阿里云边缘计算和CDN的关键词
- MS SqlServer中少用但是好用的SQL语句
- 华夫饼为什么不松软_掌握这2个关键点,5个小细节,3个小技巧,保证烙饼松软又好吃...
- 如何用命令行查看服务器型号,服务器查看内存命令行
- H5 手势滑动以及滚动相关资料
- Spring Boot 集成Shiro和CAS
- Golang让协程交替输出
- 安装WIN10系统时“谁将会使用这台电脑”输入卡死状态的问题
- 走出误区,老杨命运发生了转折
- 前端字体图标的使用总结
- unraid个人服务器使用指南——持续更新中
- 论文笔记《Combining Events and Frames Using Recurrent Asynchronous Multimodal Networks for Monocular ...》
- 重金属深度处理,低浓度镍离子去除技术
- 计算机二级vb考试大纲与样卷,全国高校计算机等级考试广西二级VB考试大纲和模拟试卷.doc...
- 基于Java毕业设计校园社团管理平台源码+系统+mysql+lw文档+部署软件
- 贸然的对音乐版权进行维护,这种激进的方式将如何收场?
- 鸿蒙3部曲先看哪部,“隋唐三部曲”“鸿蒙三部曲”“斗罗四部曲”谁才是网文巅峰之作...
- 【python】pyc文件反编译为py文件
热门文章
- Java教程:Java break语句:跳出循环
- java中使用httpget_如何在Java中进行HTTP GET?
- html 搜索 高亮效果,html5输入框高亮效果
- node vue 合并项目_吐血整理最佳实践:SpringBoot整合Vue前后端分离开发
- python正则替换查询_使用Python中的正则表达式进行搜索和替换
- python获取的html转换为json,python读取XML格式文件并转为json格式
- 比赛中学习(1)-使用python将大量图片重命名
- Bias-Variance Tradeoff解释
- Spring源码分析之Aop中拦截器,适配器,通知之间的关系
- VC 运行时库 /MD、/MDd 和 /MT、/MTd