268. Missing Number
来源:互联网 发布:linux中连接本地 编辑:程序博客网 时间:2024/05/20 05:31
1.原数列origin_array 的和 减去 少了一个数字的数列sub_array的和,注意原数列是0 1 2 3 - - - n的n+1个数字,比少了一个数字的数列的长度多1。
public class Solution { public int missingNumber(int[] nums) { int sub_length = nums.length; int origin_length = sub_length + 1; int sum = ((0 + origin_length-1) * origin_length) / 2; for(int i = 0;i< sub_length;i++){ sum -= nums[i]; } return sum; }}
2.
2.1 0与任何数异或一次的结果都是任何数,即 0 ^ x = x
2.2 任何相同的数与自己异或,结果都为0,结合 2.1规则,推导出 a ^ x ^ x = a ^ 0 = a
2.3 将一组数依次异或,若里面只有一个只出现一次的数,其他的数都出现两次,则最后的结果必然是那个只出现一次的数,因为相同两个数异或,结果都变成了0,0与只出现一次的数字异或,结合2.2规则,则结果是只出现1次的那个数字
比如 1 1 2 3 3 , 1 ^ 1 ^ 2 ^ 3 ^ 3 = 2
2.4 针对此题,原始数列 和 少了一个数的数列 各自全部异或,最后两个异或的结果再异或,就是找出两个数组中只出现一个次的数字
public class Solution { public int missingNumber(int[] nums) { int sub_length = nums.length; int origin_length = sub_length + 1; int sub_xor_result = 0; int origin_xor_result = 0; for(int i = 0;i < origin_length;i++) origin_xor_result = origin_xor_result ^ i; for(int i = 0;i < sub_length; i++) sub_xor_result = sub_xor_result ^ nums[i]; return origin_xor_result ^ sub_xor_result; }}
参考:
1.http://www.jianshu.com/p/b14ca0d7ad86
阅读全文
0 0
- [leetcode] 268.Missing Number
- 【leetcode】268. Missing Number
- [leetcode] 268. Missing Number
- 268. Missing Number
- Leetcode 268. Missing Number
- 268. Missing Number LeetCode
- LeetCode 268. Missing Number
- 268. Missing Number
- 【LeetCode】268. Missing Number
- 268. Missing Number
- [LeetCode]268. Missing Number
- 268. Missing Number
- LeetCode *** 268. Missing Number
- 268. Missing Number
- 【leetcode】268. Missing Number
- leetcode-268. Missing Number
- LeetCode-268.Missing Number
- LeetCode 268. Missing Number
- Socket通信,简单的用两个手机实现TCPIP
- C++学习笔记(二):内联函数inline
- 人工智能之机器学习算法体系汇总
- 换钱的方法数
- 如何找出数列中符合条件的数对的个数
- 268. Missing Number
- 简单 Shell 脚本随手录
- easyui设置datebox默认当前日期,且只能选择当前日期之前的日期
- mongoose中connect()、createConnection()和connection的区别和作用
- javascript学习笔记:BOM对象(存疑)
- ARM-Linux移植之(一)——内核启动流程分析
- 一些精致的web UI框架及常用前端UI框架
- 数字变成大写金额
- The Festive Evening(思维题)