博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode: Single Number I & II
阅读量:5156 次
发布时间:2019-06-13

本文共 1367 字,大约阅读时间需要 4 分钟。

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)<

 

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

你可能感兴趣的文章
JVM-调优命令
查看>>
大数据时代,新起的数据有哪几种模型
查看>>
获取文件后缀名
查看>>
sso单点登录系统(解决session共享)
查看>>
第三阶段 15_JavaWeb基础_JQuery的事件处理
查看>>
P1546 最短网络 Agri-Net
查看>>
App_Offline.htm and working around the "IE Friendly Errors" feature
查看>>
阿里云 Debian 9.2 安装 Java Web 环境
查看>>
WEB字体,多列布局和伸缩盒
查看>>
python 中的metaclass和baseclasses
查看>>
Codeforces 1189B Number Circle
查看>>
Kafka安装及部署
查看>>
Java常量
查看>>
160. Intersection of Two Linked Lists
查看>>
欧拉回路
查看>>
如何调换antd中Modal对话框确认按钮和取消按钮两个按钮的位置
查看>>
如何把GitHub中的开源项目导入到Eclipse
查看>>
K-近邻算法(KNN)
查看>>
学习三
查看>>
获取音、视频时长(NAudio,Shell32,FFmpeg)
查看>>