leetcode - Single Number
今天开始刷leetcode上的题,争取校招前刷过一遍,从AC率最高的题目开始刷,不废话了,看题
题目:Single Number
Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
个人思路:
1、对数组排序(从小到大或者从大到小)
2、从第一个数开始,与它后面一个数比较,若相同,说明数组中有两个这样的数,若不同,说明数组中只有一个这样的数,也即是我们要获得的数
代码(main里面的代码用于测试,提交时只需提交必要代码即可):
1 #include <algorithm> 2 #include <iostream> 3 4 using namespace std; 5 6 class Solution 7 { 8 public: 9 int singleNumber(int A[], int n) 10 { 11 int index; 12 sort(&A[0], &A[n]); 13 for (index = 0; index < n; index += 2) 14 { 15 if (A[index] != A[index + 1]) 16 { 17 break; 18 } 19 } 20 21 return A[index]; 22 }; 23 }; 24 25 int main() 26 { 27 int A[] = {1, 2, 1, 3, 3, 4, 2, 5, 4}; 28 Solution s; 29 int single = s.singleNumber(A, 9); 30 cout << single << endl; 31 32 system("pause"); 33 return 0; 34 }
上面的代码先排序,然后遍历数组,由于不是很清楚sort函数的时间复杂度,姑且当作O(nlogn)吧,总的来说,成功AC了,但整个代码的时间复杂度为O(nlogn)
且题目的要求为:Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
上网查找了线性时间复杂度算法,并且实践了一下,在这里与大家分享,原文链接:http://www.cnblogs.com/changchengxiao/p/3413294.html
思路:
1、对于异或运算,有a ^ b = b ^ a和0^ a = a
2、那么遍历数组时,将数组所有元素进行异或处理,相同的元素异或结果为0,则最终的异或结果即为只出现一次的元素
代码:
1 #include <algorithm> 2 #include <iostream> 3 4 using namespace std; 5 6 class Solution 7 { 8 public: 9 int singleNumber(int A[], int n) 10 { 11 //个人思路 12 /* 13 int index; 14 sort(&A[0], &A[n]); 15 for (index = 0; index < n; index += 2) 16 { 17 if (A[index] != A[index + 1]) 18 { 19 break; 20 } 21 } 22 23 return A[index]; 24 */ 25 26 //网上思路 27 int result = 0; 28 for (int i = 0; i < n; ++i) 29 { 30 result ^= A[i]; 31 } 32 33 return result; 34 }; 35 }; 36 37 int main() 38 { 39 int A[] = {1, 2, 1, 3, 3, 4, 2, 5, 4}; 40 Solution s; 41 int single = s.singleNumber(A, 9); 42 cout << single << endl; 43 44 system("pause"); 45 return 0; 46 }
原文链接中还有两个扩展题,可以看看,好了,就到这吧
转载于:https://www.cnblogs.com/laihaiteng/p/3776910.html
leetcode - Single Number相关推荐
- [LeetCode]Single Number II
今天室友推荐了一道LeetCode上面的练习题Single Number II,题目大概的意思是有一个整形的数组,里面只有一个数是出现一次的,其他的数都出现了三次,然后让把这个数找出来. 第一眼看到这 ...
- LeetCode Single Number I / II / III
[1]LeetCode 136 Single Number 题意:奇数个数,其中除了一个数只出现一次外,其他数都是成对出现,比如1,2,2,3,3...,求出该单个数. 解法:容易想到异或的性质,两个 ...
- 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(位操作)
问题:给出一个数组,其中只有一个数出现一次,其它数出现三次,找出出现一次的数 思路: 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 单独的数字
Given an array of integers, every element appears twice except for one. Find that single one. Note: ...
- [Leetcode] single number 找单个数
Given an array of integers, every element appears twice except for one. Find that single one. Note: ...
- LeetCode Single Number
Given an array of integers, every element appears twice except for one. Find that single one. Note: ...
最新文章
- shell 流程控制语句
- 网络:HTTP1.1和HTTP2区别
- 决策树 算法原理及代码
- sparkstreaming监听hdfs目录如何终止_HDFS—HA高可用详解
- SDWebImage之工具类
- Android-JNI开发系列《一》-动态库的函数注册
- NYOJ--60谁获得了最高奖学金
- 1解锁方式9008_黔隆科技刷机教程红米4A忘记密码刷机解锁降级救砖解屏幕锁账户锁教程...
- Android之monkey Test
- edgewin10无法安装_win10内置Edge浏览器遇到“您未安装FLASH控件”如何解决
- CoreText(五):省略号
- 马士兵_JAVA自学之路
- Win 11 预览版虚拟机安装
- JSP页面之间数据传递,JSP页面跳转
- 货币金融学-期末复习
- 程序员升职记-五种种说话套路
- parrot无人机蓝牙协议
- SE-Net:Squeeze-and-Excitation blocks
- 用C语言给孩子水果英语早教,宅家陪娃资源:100种水果的英文读法+6种室内可以玩的球类游戏,和娃嗨起来!...
- Win32编程问题一,“WinMain”: 无法重载函数
热门文章
- 《最后生还者:第二部》文学批评
- 【LINUX】Oracle数据库 linux磁盘头数据损坏修复
- yuzu模拟器linux,Yuzu Early Acces
- Ubuntu 16.04安装Tomcat 8 图解
- oracle dump 转储
- 【Task】- JVM逃逸分析等待学习任务
- laravel基础课程---11、lavarel的ajax操作(ajax优劣势是什么)
- linux学习笔记-10.解压与压缩
- X509证书认证流程介绍
- 前后端分离+本地服务实时刷新+缓存管理+接口proxy+静态资源增量更新+各种性能优化+上线运维发布——gulp工作流搭建...