zoukankan      html  css  js  c++  java
  • leetcode single number系列

    这个系列一共有三题,第一题是一组数里除了一个数出现一次之外,其他数都是成对出现,求这个数。

    第二题是一组数里除了两个数出现一次外,其他数都是成对出现,求这两个数

    第三题是一组数里除了一个数出现一次外,其他数都是出现三次,求这个数。

    先说第一题,这题很简单,就是将所有的数全部异或一遍,由于两个相同的数异或之后得到0,所以最后得到的结果就是要求的那个数。

    第二题有点难,

    解题方法是,设所求的那两个数为n1,n2。那么n1和n2必然不相等,那么它们必然至少有一个bit的值不等。

    那么与题1一样,将所有的数异或一遍,得到一个结果为n1^n2。利用这个数字求出n1与n2在哪个位置上不等,设为m。

    然后将所有的数分成两组,一组为在位置m上为1的数,一组为在位置m上为0的数。那么n1,n2必然分在两个组。

    这样题目就转换为了题1。

    第三题的思路为

    设要求的那个数为n,如果n在bit 0上为1,那么在bit 0上所有数的和必然不能被3整除,反之,必然可以被3整除。

    以此类推算出所有位置上的值。

  • 相关阅读:
    师弟大喜之日,送上一幅对联 求横批
    漫画:Google 走了
    产品研发流程改进
    Outlook2010 Bug 一则
    Android 手机用户版本比例
    CDMA 短信中心号码
    UIM卡 PIN 码特点
    [Accessibility] Missing contentDescription attribute on image
    java打印函数的调用堆栈
    android中解析Json
  • 原文地址:https://www.cnblogs.com/elnino/p/5741840.html
Copyright © 2011-2022 走看看