zoukankan      html  css  js  c++  java
  • Leetcode 137.只出现一次的数字II

    只出现一次的数字II

    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。

    说明:

    你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

    示例 1:

    输入: [2,2,3,2]

    输出: 3

    示例 2:

    输入: [0,1,0,1,0,1,99]

    输出: 99

    将int数分为32位,那么按该题的要求,这32位的每一位,所出现过的数目必定是3N或3N+1,3N+1的位级必然是那唯一的一个元素贡献的。对int数res的每个位进行数组位与遍历,出现3N+1的即保留下来,最终刷完32位之后,可得结果。

     1 class Solution{
     2 public:
     3     int singleNumber(vector<int>& nums){
     4         int length = nums.size();
     5         int result = 0;
     6         for (int i = 0; i<32; i++){
     7             int count = 0;
     8             int mask = 1 << i;
     9             for (int j = 0; j<length; j++){
    10                 if (nums[j] & mask)
    11                     count++;
    12             }
    13             if (count % 3)
    14                 result |= mask;
    15         }
    16         return result;
    17     }
    18 };
  • 相关阅读:
    学期总结
    C语言I博客作业09
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言II—作业04
    C语言II—作业03
    C语言II—作业02
    C语言II博客作业01
  • 原文地址:https://www.cnblogs.com/kexinxin/p/10187860.html
Copyright © 2011-2022 走看看