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整除。

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

  • 相关阅读:
    668. Kth Smallest Number in Multiplication Table
    658. Find K Closest Elements
    483. Smallest Good Base
    475. Heaters
    454. 4Sum II
    441. Arranging Coins
    436. Find Right Interval
    410. Split Array Largest Sum
    392. Is Subsequence
    378. Kth Smallest Element in a Sorted Matrix
  • 原文地址:https://www.cnblogs.com/elnino/p/5741840.html
Copyright © 2011-2022 走看看