zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    null和undefined的区别
    "NetworkError: 404 Not Found fontawesome-webfont.woff?v=4.0.3
    php字符串
    php数组
    Oracle 和 MySQL的区别(不完整)
    拦截器和过滤器的区别
    SpringMVC和Struts2的区别
    Redis的介绍
    SpringBoot入门(2)
    SpringBoot入门(1)
  • 原文地址:https://www.cnblogs.com/tqing/p/12236821.html
Copyright © 2011-2022 走看看