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

    题目:

    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?

    解析:

    其实这题好像把异或升级成三目运算,也就是说异或三个数,这三个数对应位都相同为0,都不同为1

    可以用一个数组存储每位出现的个数,最后%3,余下的位组成的数字就是single num

     1 class Solution {
     2 public:
     3     int singleNumber(vector<int>& nums) {
     4         int n = sizeof(int) * 8;
     5         int count[n] = {0};
     6         vector<int>::size_type i = 0;
     7         for(i;i < nums.size();i++)
     8             for(int j = 0; j < n;j++)
     9                 count[j] += ( nums[i] >> j ) & 1;
    10         for(int j = 0; j < n;j++)
    11             count[j] %= 3;
    12 
    13         int result = 0;
    14         for(int j = 0; j < n;j++)
    15             result +=( count[j] << j );
    16         return result;
    17     }
    18 };
  • 相关阅读:
    zookeeper3.5.6单机集群环境搭建
    mycat分表
    myacat分片及全局表定义
    装饰器
    函数参数,作用域
    可变,不可变,无序, 有序
    dict
    列表可变,元祖不可变
    列表操作
    字符串find
  • 原文地址:https://www.cnblogs.com/raichen/p/4958783.html
Copyright © 2011-2022 走看看