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

    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?

    思路:

      hashtable 容易想到

      bit vector 新思路

    他人代码:

    public class Solution {
        public int singleNumber(int[] A) {
            /*
            element in A is 32bit,
            sum corresponding bits from all elements and mod each by 3 then should left the single number
            */
            int[] sum=new int[32];
            int res=0;
            for(int i=0;i<32;i++)
            {
                for(int j=0;j<A.length;j++)
                {
                    sum[i]+=((A[j]>>i)&1);//sum every bit of all numbers
                }
                sum[i]%=3;
                res+=((sum[i]&1)<<i);// recover the single number
            }
            return res;
        }
    }
    View Code

    学习之处:

    • bit vector 这种数据结构实在太美妙了
    • 右移 缩小2倍 左移 添加0 增大2倍 深刻左移和右移的含义
    • 数据的变换与恢复方法

    need to learn

  • 相关阅读:
    商场活动|简单易用|可下载试用|复用转盘抽奖软件
    js dictionary
    财务大写
    SET ANSI_NULLS ON ……
    批量生成clr脚本
    Git
    CTE递归查询
    jquery 巧用json传参
    个人犯的一个golang routine错误
    .NET实现自动编译
  • 原文地址:https://www.cnblogs.com/sunshisonghit/p/4316222.html
Copyright © 2011-2022 走看看