• 位运算符


    摘要:位运算符技巧和解题思路

    一、找重复出现的数 (变体是找出落单数)

    描述:一个数组中只有一个数出现了2次,求这个数是什么?

    解法1: 使用异或运算
    A^0 = A ; A^A = 0;
    我们只需要把要消掉的数变成双个进行异或运算
    解法2: 桶排序

    	public static void main(String[] args) {
    		int N =11 ;
    		//初始化数组
    		int [] arr = new int[N];
    		for (int i = 0 ; i < arr.length-1 ; i++ ){
    		    arr[i] = i+1;
    		} 
    		//产生随机数
    	    arr[arr.length-1] = new Random().nextInt(N-1)+1;
    	    System.out.println("随机重复数:"+arr[arr.length-1]);
    	    for (int i = 0 ; i < arr.length ;i++ ){
    		    System.out.print(arr[i]+" ");
    		}
    	    int x = 0;
    	    for (int i = 1 ; i < N ;i++ ){
    	        x = x^i;
    	     } 
                for (int j = 0 ; j<N ; j++){
    		    x = x^arr[j];
    	    } 
    		 
    		System.out.println("重复数为:"+x);
    		
    	}
    

    二、找二进制1的个数

    考察与运算
    解法1. 1& 32位的二进制整数,计数 N&(1<<i) == (1<<I) ?此位为1可计数 : 不是继续循环
    解法2. (N-1)&N ==0 ? 结束循环 : 计数

    三、进制转换

    求整数x 转成 K 进制的字符串
    Integer.toString( x , k)

  • 相关阅读:
    火柴排队sol
    国王游戏sol
    子串sol
    跳石头
    解方程sol
    花匠sol
    字符串整理
    计算系数
    矩阵取数游戏sol
    8.2_java_28
  • 原文地址:https://www.cnblogs.com/Qvolcano-blog/p/14586421.html
Copyright © 2020-2023  润新知