Leetcode 刷题 Day4 136.SingleNumber
来源:互联网 发布:扒谱子软件 编辑:程序博客网 时间:2024/06/05 11:34
问题: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?
背景知识:
异或,英文为exclusive OR,或缩写成xor
异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:
a⊕b = (¬a ∧ b) ∨ (a ∧¬b)
如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位。
异或略称为XOR、EOR、EX-OR
程序中有三种演算子:XOR、xor、⊕。
使用方法如下
z = x ⊕ y
z = x xor y
别人的python思路:http://www.powerxing.com/leetcode-single-number/
别人的java思路:http://longcxm.iteye.com/blog/1461543 并且给问题一个背景“ 有意思的题目:很多成对出现数字保存在磁盘文件中,注意成对的数字不一定是相邻的,如2, 3, 4, 3, 4, 2……,由于意外有一个数字消失了,如何尽快的找到是哪个数字消失了? 由于有一个数字消失了,那必定有一个数只出现一次而且其它数字都出现了偶数次。用搜索来做就没必要了,利用异或运算的两个特性——1.自己与自己异或结果为0,2.异或满足交换律。”
我的解决方案:
public class Solution { public int singleNumber(int[] nums) { int result=0; for(int i=0;i<nums.length;i++) { result^=nums[i]; } return result; } }
看完这个做法以后如醍醐灌顶,豁然开朗
阅读全文
0 0
- Leetcode 刷题 Day4 136.SingleNumber
- LeetCode -- singleNumber
- Leetcode-SingleNumber
- Leetcode习题: SingleNumber II
- Leetcode习题: SingleNumber II
- Leetcode: SingleNumber I
- Leetcode: SingleNumber II
- leetcode-136-singleNumber
- Leetcode 136 SingleNumber
- leetcode singleNumber解题思路
- LeetCode-136 SingleNumber
- leetcode-260-SingleNumber III
- LeetCode 136 SingleNumber
- SingleNumber
- SingleNumber
- SingleNumber
- singlenumber
- SingleNumber
- HDU 1159 Common Subsequence
- 切图异常: Cannot run program "gm": error=2, No such file or directory 处理
- C++ 封装 随笔
- 一键重装系统,装机员一键重装最新版
- JavaScript权威指南读书笔记—— 模块
- Leetcode 刷题 Day4 136.SingleNumber
- composer 安装laravel指定版本
- List接口的ArrayList的使用
- [bzoj2251][后缀数组][2010Beijing Wc]外星联络
- Tradingview做好交易图表工具(一)
- tf.matrix_diag和tf.matrix_inverse的用法(tensorflow如何生成对角矩阵和求逆矩阵)
- 分布式节点协调实现方式
- opencv bug集合
- FRI.Device.Rating.Program.2.0.