落单的数
来源:互联网 发布:linux ls查看文件大小 编辑:程序博客网 时间:2024/06/07 11:52
给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。
样例
给出 [1,2,2,1,3,4,3],返回 4
挑战
方法二: 异或运算
一次遍历,常数级的额外空间复杂度
方法一: 首先想到的是对数组进行排序,然后扫描一遍让当前数跟左边和右边的数比较,第一个数和最后一个数要额外考虑
public int singleNumber1(int[] A) { if (A.length == 0) return 0; quickSort(A, 0, A.length - 1); for (int i = 0; i < A.length - 1; i++) { if (i == 0 && A[i] != A[i + 1] || i != 0 && A[i - 1] != A[i] && A[i] != A[i + 1]) { return A[i]; } } return A[A.length - 1]; } public void quickSort(int[] nums, int left, int right) { int l = left, r = right; if (left > right) return; int key = nums[left]; do { while (l < r && key < nums[r]) r--; if (l < r) nums[l++] = nums[r]; while (l < r && key > nums[l]) l++; if (l < r) nums[r--] = nums[l]; } while (l != r); nums[l] = key; quickSort(nums, left, r - 1); quickSort(nums, l + 1, right); }
方法二: 异或运算
public int singleNumber(int[] A) { int result = 0; for (int i = 0; i < A.length; i++) { result ^= A[i]; } return result; }
阅读全文
0 0
- 落单的数
- LinCode落单的数
- 落单的数
- 题目:落单的数
- 落单的数 III
- 落单的数 II
- 落单的数
- 落单的数
- LinCode落单的数
- LintCode_82_落单的数
- lintcode ----落单的数
- LintCode 落单的数
- 落单的数
- 落单的数II
- 落单的数 III
- 落单的数
- 落单的数 II
- 落单的数 III
- LeetCode
- python图形化显示非搜索二叉树
- 对于时间的处理
- UGUI性能优化
- 根据映射文件自动建表
- 落单的数
- Linux/Mac 查看自己公网IP的方法
- 微信公众号开发,微信支付功能开发(网页JSAPI调用)
- 2016年4月~2017年7月 创业经验总结
- 编译caffe报错:make: *** [runtest] 错误 134
- databinding的一个奇葩问题
- 已解决:序列nocache导致的log file sync等待事件
- java实现读者-写者问题
- 在centos7下编译安装memcached