zoukankan      html  css  js  c++  java
  • LeetCode Single Number II

    class Solution {
    public:
        int singleNumber(int A[], int n) {
            sort(A, A+n);
            int last = A[0];
            int time = 1;
            for (int i=1; i<n; i++) {
                if (last != A[i]) {
                    if(time == 3) {
                        time = 1;
                        last = A[i];
                        continue;
                    }
                    return last;
                }
                time++;
            }
            if (time != 3) return last;
        }
    };

    一时想不出线性的方法

    第二轮:


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

    Note:
    Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

     1 class Solution {
     2 public:
     3     int singleNumber(int A[], int n) {
     4         int bitcount[32] = {0};
     5         for (int i=0; i<n; i++) {
     6             int cur = A[i];
     7             for (int i=0; i<32 & cur != 0; i++) {
     8                 bitcount[i] += cur & 0x1;
     9                 cur>>=1;
    10             }
    11         }
    12         int num = 0;
    13         for (int i=32-1; i>=0; i--) {
    14             num<<=1;
    15             num|=bitcount[i] % 3 != 0;
    16         }
    17         return num;
    18     }
    19 };

     还是用这个方法吧。

  • 相关阅读:
    第二阶段团队冲刺第五天
    第二阶段冲刺七
    第二阶段冲刺六
    第二阶段冲刺五
    第二阶段冲刺四
    冲刺第二阶段三
    冲刺第二阶段二
    冲刺第二阶段 一
    项目总结
    第二阶段SCRUM
  • 原文地址:https://www.cnblogs.com/lailailai/p/3681737.html
Copyright © 2011-2022 走看看