• 蓝桥学院2019算法题1.2


      两种方式实现:

     1 package bitOperation;
     2 
     3 import java.util.Arrays;
     4 import java.util.Random;
     5 
     6 /**
     7  * @author zsh
     8  * @company wlgzs
     9  * @create 2019-02-14 10:12
    10  * @Describe 题目·
    11  * 找出唯一成对的数1-1000这1000个数放在含有1001个元素的数组中,
    12  * 只有唯一的个元素值重复,其它均只出现一次。
    13  * 每个数组元素只能访问一次,设计一个算法,将它找出来;
    14  * 不用辅助存储空间,能否设计一个算法实现?
    15  */
    16 public class Main1 {
    17     public static void main(String[] args) {
    18         //总数N
    19         int N = 11;
    20         int[] arr = new int[N];
    21         //生成1-1000的随机数,范围[0,N)
    22         int index = new Random().nextInt(N-1)+1;
    23         //给数组的元素赋值
    24         for (int i = 0; i < arr.length-1; i++) {
    25             arr[i]=i+1;
    26         }
    27         //最后一个数,是随机数
    28         arr[arr.length-1] = index;
    29         //打印数组
    30         System.out.println(Arrays.toString(arr));
    31         int x1 = 0;
    32         for (int i = 1; i < N; i++) {
    33             x1 = x1 ^ i;
    34         }
    35         for (int i = 0; i < N; i++) {
    36             x1 = x1 ^ arr[i];
    37         }
    38         System.out.println(x1);
    39 
    40         System.out.println("---------------使用辅助空间实现--------------------");
    41         int[] helper = new int[N];
    42         for (int i = 0; i < N; i++) {
    43             //将每个数出现的数量放在0-1000个元素中
    44             helper[arr[i]]++;
    45         }
    46         for (int i = 0; i < N; i++) {
    47             if (helper[i] == 2){
    48                 System.out.println(i);
    49             }
    50         }
    51 
    52     }
    53 }

    知识补充:与:都为1结果为1 & ;或:有一个为1结果为1 | ;异或:二者不同时结果为1 ^

    异或可以理解为不进位加法。1+1 = 0, 0 + 0 = 0,1 + 0 = 1。

    判断奇偶数 x&1 == 1 奇数; x&1 == 0 偶数。

  • 相关阅读:
    Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能
    泽优文档助手
    XproerIM2-更新-2017-6-28
    XproerIM-v1.3更新-企业即时通迅
    新建一个UI窗口-XproerUI(MFC)教程
    XproerUI控件工厂代码优化-使用C++11特性优化
    XproerIM V2开源,基于XproerUI引擎构架
    Install Shield 打包教程
    小米3刷机教程
    如何在属性面板中增加一个属性-UI界面编辑器(XproerUI)教程
  • 原文地址:https://www.cnblogs.com/zsh-blogs/p/10373329.html
Copyright © 2020-2023  润新知