zoukankan      html  css  js  c++  java
  • leetcode — single-number-ii

    /**
     * Source : https://oj.leetcode.com/problems/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?
     *
     */
    public class SingleNumber2 {
    
        /**
         * 数组中每个元素出现3次,只有一个元素出现一次,找出出现一次的元素
         *
         * 沿用SingleNumber的方法,比如:{1,1,1,2,2,2,3}
         * 01
         * 01
         * 01
         * 10
         * 10
         * 10
         * 11
         * ______
         * 44 对每一位求和
         * 11 每一位对3求余
         *
         * @param arr
         * @return
         */
        public int singleNumber (int[] arr) {
            int res = 0;
            for (int i = 0; i < 32; i++) {
                int sum = 0;
                int mask = 1<<i;
                for (int j = 0; j < arr.length; j++) {
                    if ((arr[j] & mask) != 0) {
                        sum ++;
                    }
                }
                res |= (sum % 3) << i;
            }
            return res;
        }
    
        public static void main(String[] args) {
            SingleNumber2 singleNumber2 = new SingleNumber2();
            System.out.println(singleNumber2.singleNumber(new int[]{1,1,1,2,2,2,3}) + " == 3");
            System.out.println(singleNumber2.singleNumber(new int[]{14,14,14,9}) + " == 9");
        }
    
    
    }
    
  • 相关阅读:
    CF149D Coloring Brackets
    CF508D
    CF483C Diverse Permutation
    【纪念】我写过几乎最长的代码
    .net core图片上传详解
    layui插件croppers的使用
    关于日常操作中sql的性能
    leeCode 278
    leeCode刷题 1078
    leeCode刷题 lc184
  • 原文地址:https://www.cnblogs.com/sunshine-2015/p/7887186.html
Copyright © 2011-2022 走看看