lintcode-简单-落单的数
来源:互联网 发布:腾讯网络手机游戏 编辑:程序博客网 时间:2024/06/05 02:58
描述:给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。
样例:给出 [1,2,2,1,3,4,3],返回 4
挑战:一次遍历,常数级的额外空间复杂度(自主选择)
思路:(1)先不考虑挑战,自己看着写出的代码计算速度很慢也有很多优化的地方。但是毕竟是自己一点没有参考写出来的,希望自己能一点点进步吧。
(2)把数组中的数排序(从小到大)
(3)这种落单只有三种情况:
A. 1,1,2 这时最后两个数不相等 即A[A.length-1]!=A[A.length-2] 时,落单就是最后一个数
B. 1,,2,2 这时数列最前边两个数不相等, 即A[0]!=A[1]时,落单就是第一个数
C. 1,1,2,3,3 这时落单的数在中间,和左右两个数不相等 即这时的判断条件为:A[i]!=A[i+1]&&A[i]!=A[i-1] 落单的数就是A[i]
AC代码:
public class Solution { /** *@param A : an integer array *return : a integer */ public int singleNumber(int[] A) { // Write your code here int result=0; if(A.length==0) { return result; } if(A.length==1) { return A[0]; } for(int i=0;i<A.length-1;i++){ for(int j=i+1;j<A.length;j++){ if(A[i]>A[j]) { int temp=A[i]; A[i]=A[j]; A[j]=temp; } } } if(A[0]!=A[1]) { result=A[0]; } if(A[A.length-1]!=A[A.length-2]) { result=A[A.length-1]; } for(int i=1;i<A.length-1;i++) { if(A[i]!=A[i+1]&&A[i]!=A[i-1]) { result=A[i]; break; } } return result; }}
优化算法后续上传
0 0
- lintcode-简单-落单的数
- lintcode ----落单的数
- LintCode 落单的数
- lintcode-落单的数
- lintcode,落单的数
- lintcode->落单的数
- LintCode :落单的数
- 落单的数-LintCode
- lintcode:落单的数
- lintcode落单的数
- LintCode 落单的数
- Lintcode落单的数
- LintCode-落单的数 II
- LintCode-落单的数 III
- Lintcode—落单的数
- LintCode:落单的数 III
- lintcode-落单的数 II
- lintcode-落单的数 III
- Impala 学习
- 回调函数的定义和使用
- 网络流模板
- 1017. Queueing at Bank
- linux下编写进度条
- lintcode-简单-落单的数
- 制作 OpenStack Linux 镜像
- OSG中的索引数组绘制图元
- POJ 3510 A Tale from the Dark Side of the Moon 可能会
- 打印九九乘法表
- matlab读取grb、grb2数据并导出、绘图
- 安卓开发-动画
- 欢迎使用CSDN-markdown编辑器
- 王小川:工程师在人工智能时代会处于越来越重要的位置