LeetCode — Single Number II 解题报告
来源:互联网 发布:软件质量保证大纲 编辑:程序博客网 时间:2024/05/16 14:33
题目如下:
题目解析:
题目的意思:给定含n个整数的数组,其中除了1个数之外,其余的数出现3次。求这个出现1次的数字是什么?
在Single Number这道题目的时候,我们巧妙的使用了数学运算中的异或操作,扫描一次数组就解决了问题。
对于这道题目,我们最先想到的方法就是排序,然后从头到尾进行扫描一次就OK,算法耗费的时间为nlgn+n,不需要额外的空间。
其次,想到的方法就是申请额外的空间,比如map等,对出现过的数字进行计数,然后扫描一次,即可找到只出现1次的数字,算法耗费的时间为nlgn+n/3,额外使用空间map。
最后,我们可以统计整数的每一位出现1的次数多少。因为整数总共有32位bit,我们统计数组中的每一个整数在0-31位上出现1的数目。每一位1的数目对3进行求模操作,结果是0或者1.通过1出现的位置,即可恢复这个数字是什么。这种方法的时间复杂度为32n,并且需要额外的内存空间32个int。
对于上述3种方法,需要根据实际的数组大小进行定夺,不能从表面的算法耗费时间进行决定哪一个更好。第3种方法不一定比第一种方法更快。
题目代码:
class Solution {public: int singleNumber(int A[], int n) { int result = 0; int* count = new int[32]; for(int i = 0; i < 32; ++i){ count[i] = 0; } for(int i = 0; i < 32; ++i){ for(int j = 0; j < n; ++j){ if((A[j] >> i) & 1){ ++count[i]; } } result |= ((count[i]%3) << i); } delete[] count; return result; }};
0 0
- LeetCode — Single Number II 解题报告
- LeetCode解题报告 --- Single Number II
- LeetCode 137 Single Number II 解题报告
- [leetcode] 137. Single Number II 解题报告
- LeetCode 137. Single Number II 解题报告
- [Leetcode] 137. Single Number II 解题报告
- LeetCode — Single Number 解题报告
- LeetCode 解题报告 Single Number
- LeetCode-Single Number-解题报告
- 【LeetCode】Single Number 解题报告
- LeetCode 136 Single Number解题报告
- [leetcode] 136. Single Number 解题报告
- [leetcode] 260. Single Number III 解题报告
- LeetCode 136. Single Number 解题报告
- LeetCode 136. Single Number 解题报告
- LeetCode 260. Single Number III 解题报告
- leetcode:136. Single Number解题报告
- [Leetcode] 136. Single Number 解题报告
- smsManager.sendTextMessage() 发送短信息
- android 实现分享功能
- J2SE_一个.java文件中至多有一个public修饰的类
- Matrix
- 安装wamp时出现httpd.exe无法找到组件MSVCR100.dll的解决办法
- LeetCode — Single Number II 解题报告
- 指针问题
- 学习SEO最基础的知识
- Centos命令行执行Java程序(引入外部Jar)
- ASIHTTPRequest实现断点续传
- SunPinyin代码导读 - 语言模型的训练
- 蒙特卡罗方法(Monte Carlo method)
- storm的一些基本概念
- oracle分析函数