• 《程序员代码面试指南》第七章 位运算 在其他数都出现偶数次的数组中找到出现奇数次的数


    题目

    在其他数都出现偶数次的数组中找到出现奇数次的数
    

    java代码

    package com.lizhouwei.chapter7;
    
    /**
     * @Description: 在其他数都出现偶数次的数组中找到出现奇数次的数
     * @Author: lizhouwei
     * @CreateDate: 2018/4/28 21:02
     * @Modify by:
     * @ModifyDate:
     */
    public class Chapter7_5 {
    
        //在其他数都出现偶数次的数组中找到出现奇数次的数
        public int getOnce(int[] arr) {
            int once = 0;
            for (int i = 0; i < arr.length; i++) {
                once = once ^ arr[i];
            }
            return once;
        }
    
        //在其他数都出现偶数次的数组中找到出现奇数次的数
        public int getTwo(int[] arr) {
            int once = 0;
            for (int i = 0; i < arr.length; i++) {
                once = once ^ arr[i];
            }
            int rightOne = once & (~once + 1);//取最左的第一个出现1的位数
            int one = once;
            for (int i = 0; i < arr.length; i++) {
                if ((rightOne & arr[i]) != 0) {
                    one = one ^ arr[i];
                }
            }
            System.out.print("第一个数:" + one);
            System.out.println(";第二个数:" + (once ^ one));
            return once;
        }
    
        //测试
        public static void main(String[] args) {
            Chapter7_5 chapter = new Chapter7_5();
            int[] arr = {1, 1, 2, 3, 3, 4, 4, 5, 5};
            int reslt = chapter.getOnce(arr);
            System.out.print("{1,1,2,3,3,4,4,5,5}中");
            System.out.println("只出现一次的数为:" + reslt);
            int[] arr1 = {1, 1, 2, 3, 3, 4, 5, 5};
            System.out.print("{1,1,2,3,3,4,5,5}中");
            chapter.getTwo(arr1);
        }
    }
    

    结果

  • 相关阅读:
    Eclipse常用快捷键
    java中构造方法及其作用
    jsp的验证码实现
    request.getParameter()与request.setAttribute()的区别 (转载)
    HTML表单操作的记录
    Java Collection(转载)
    Java中StringBuffer类append方法的使用
    java中string.trim()函数的使用
    doGet与doPost的区别
    celery
  • 原文地址:https://www.cnblogs.com/lizhouwei/p/8969697.html
Copyright © 2020-2023  润新知