• 1.2找数组中唯一成对的那个数


    题目介绍

    1-1000这1000个数放在含有1001个元素的数组中,只有唯一的一个元素重复,其它均只出现一次。每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助空间,能否实现?

    题目解法

    思路

    题目的意思是有一个数组,里面的数字是唯一的11000,但是其中有两个数字重复,所以是1001的数组,假设这个重复的数字是K,用数(1K~1000)^ 数组(1KK~1001)就得到 K。
    KK=0,K0=A

    核心代码

    int N=1001;
    int x1=0;
    //数(1~K~1000)^ 数组(1~K~K~1001)
    for(int i=1;i<=N-1;i++){
    	x1=(x1^i);
    }
    for(int i=0;i<N;i++){
    	x1=(x1^arr[i]);
    }
    

    完整代码

    #include<iostream>
    #include<cstdlib>
    #include<time.h>
    using namespace std;
    int main() {
    	int N=1001;
    	int arr[N];
    	for(int i=0; i<N-1; i++) {
    		arr[i]=i+1;
    	}
    	srand((unsigned)time(NULL));//设置随机数种子
    	arr[N-1] = rand()%(N-1)+1;//产生[1-1000]的随机数,rand()函数产生[0,RAND_MAX]的随机数
    	int result=0;
    	for(int i=1; i<=N-1; i++) { //将[1,1000]共1000个数进行异或
    		result^=i;
    	}
    	for(int i=0; i<N; i++) { //再与题意中的数组每个元素进行异或
    		result^=arr[i];
    	}
    	printf("%d",result);
    	return 0;
    }
    
  • 相关阅读:
    worker.properties配置
    uriworkermap.properties配置
    Apache Tomcat连接器-Web服务器操作方法
    x01.os.14: 时间都去哪儿了
    x01.os.13: 文件系统
    x01.os.12: 在 windows 中写 OS
    x01.os.11: IPC 路线图
    x01.os.10: 输入输出
    x01.os.9: 进程切换
    x01.os.8: 加载内核
  • 原文地址:https://www.cnblogs.com/tqing/p/12236821.html
Copyright © 2020-2023  润新知