• 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");
        }
    
    
    }
    
  • 相关阅读:
    SM2实现(利用openssl的evp)
    BouncyCastle的SM实践
    初步动态分析
    信安保障复习
    数据库实验3
    软件测试之测试用例设计题
    Spring SPI 机制总结
    Servlet与Netty横向对比
    被遮挡部分高亮
    (十一)Android环境变量设置
  • 原文地址:https://www.cnblogs.com/sunshine-2015/p/7887186.html
Copyright © 2020-2023  润新知