136. Single Number

意思就是给你一堆数,每个数都出现了两次,只有一个数只出现了一次,找出这个数

位运算(和c艹一样)

&:按位与

|:按位或

^:异或(一样为0,不一样为1)

再说一下异或的性质,满足交换律和结合律

因此:

  对于任意一个数n

  n ^ 0 = n

  n ^ n = 0

  对于这道题来说,所有数依次异或剩下的就是那个数了

  

 class Solution(object):
def singleNumber(self, nums):
ans = 0
for i in nums:
ans ^= i
return ans

127. Single Number II

意思就是所有的数都出现了三遍,只有一个数出现了一遍,求这个数

这个题没明白位运算怎么算的

对于给定数组nums,剔除所有重复元素后为nums',要求答案ans,则有sum(nums)*3 - sum(num) = 2 * ans

则有表达式(int)((3*sum(set(nums)) - sum(nums)) / 2)

  

 class Solution:
def singleNumber(self, nums):
return (int)((3*sum(set(nums)) - sum(nums)) / 2)

260. Single Number III

给你一个数组,所有的数都出现了两边,有两个数出现了一遍,找出这两个数

思路是,只要把这两个数m,n分到不同的两组中,就转化为了第一个问题

对于这道题来说,不需要真正的找到这两个数,只需要找出不同就行了

我们先把所有数异或起来,那么结果就是m ^ n,那么我们找到这个m ^ n的lowbit(不知道的你或许该看看树状数组???)

那么m,n的lowbit一定不一样,所以lowbit为1的和m异或,lowbit为0的和n异或就完成了

那么我们不用管其他数,因为对于两个一样的数,他们的等价的lowbit上一定一样,所以势必会被分到同一组

这个看代码更容易理解

 class Solution:
def singleNumber(self, nums):
A = 0
B = 0
diff = 0
length = len(nums)
for i in range(length):
diff ^= nums[i]
lowbit = diff & (-diff)
for i in range(length):
if (nums[i] & lowbit) != 0:
A ^= nums[i]
else:
B ^= nums[i]
return [A,B]

136.137.260. Single Number && 位运算的更多相关文章

  1. 136. Single Number(位运算)

    Given a non-empty array of integers, every element appears twice except for one. Find that single on ...

  2. leetcode 136. Single Number 、 137. Single Number II 、 260. Single Number III(剑指offer40 数组中只出现一次的数字)

    136. Single Number 除了一个数字,其他数字都出现了两遍. 用亦或解决,亦或的特点:1.相同的数结果为0,不同的数结果为1 2.与自己亦或为0,与0亦或为原来的数 class Solu ...

  3. leetcode 136 Single Number, 260 Single Number III

    leetcode 136. Single Number Given an array of integers, every element appears twice except for one. ...

  4. LeetCode 260. Single Number III(只出现一次的数字 III)

    LeetCode 260. Single Number III(只出现一次的数字 III)

  5. 137.Single Number II---位运算---《剑指offer》40

    题目链接:https://leetcode.com/problems/single-number-ii/description/ 题目大意:给出一串数,每个数都出现三次,只有一个数只出现一次,把这个出 ...

  6. LeetCode(137) Single Number II

    题目 Given an array of integers, every element appears three times except for one. Find that single on ...

  7. 【一天一道LeetCode】#260. Single Number III

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...

  8. [LeetCode] 260. Single Number III 单独数 III

    Given an array of numbers nums, in which exactly two elements appear only once and all the other ele ...

  9. 【刷题-LeeetCode】260. Single Number III

    Single Number III Given an array of numbers nums, in which exactly two elements appear only once and ...

随机推荐

  1. CopyOnWriteArrayList源码分析

    基于jdk1.7源码 一.无锁容器 CopyOnWriteArrayList是JDK5中添加的新的容器,除此之外,还有CopyOnWriteArraySet.ConcurrentHahshMap和Co ...

  2. 【问题解决方案】本地代码文件上传到GitHub里中文乱码问题

    刚刚学完Git并试着上传了我的化石Java代码到远程库,表面一切和谐,然而.. 真让人大惊失色.. step1-检查浏览器是否是utf-8(谷歌默认是) step2-在本地编辑器设置 (按理说,not ...

  3. selenium模拟登陆淘宝

    from selenium import webdriver import time from selenium.webdriver.common.by import By from selenium ...

  4. react 路由 react-router-dom

    import React from 'react'; import DataList from './data' import Tr from './Tr' // import One from '. ...

  5. [转帖]SAP一句话入门:Production Planning

    SAP一句话入门:Production Planning http://blog.vsharing.com/MilesForce/A617692.html SAP是庞大的,模块是多多的,功能是强大的, ...

  6. spring AOP源码分析(二)

    现在,我们将对代理对象的生成过程进行分析. 在springAOP源码分析(一)的例子中,将会生成哪些对象呢? 可以看到将会生成六个对象,对应的beanName分别是: userDao:目标对象 log ...

  7. dart正则

    1.前言 API中对于正则表达式的注释是:正则表达式的规范和语义与JavaScript相同详细的规范可以参考:http://ecma-international.org/ecma-262/5.1/#s ...

  8. MyCat数据库中间件 - 分库

    MyCat MyCat用于解耦分布式数据库与java,比如分库分表以后,需要查询某条数据时,需要java根据需要查的数据先计算去哪个库查,然而有了Mycat就不用自己计算怎么存储,怎么查询了.MyCa ...

  9. Delphi数据集与记录

    1.1Delphi数据库应用程序的层次结构 Delphi数据库应用程序通过数据存取构件对数据库进行访问,通过可视的数据构件(Data Control)将数据呈现给用户,并与用户进行交互.Delphi数 ...

  10. bootstrap簡介

    bootstarp是最受歡迎的前端開發框架,可以開發數適用pc.平板電腦和手機的web應用,是基於html.css和javascript.只要學會bootstarp,就代表具有web的開發的中級水準.