美文网首页算法很美
唯一成对的数

唯一成对的数

作者: FiveZM | 来源:发表于2019-12-13 12:45 被阅读0次
/**
 * 1-1000这1000个数放在含有1001个元素的数组中,还有唯一的一个元素值重复,
 * 其他均只出现一次.每个数组元素只能访问一次,设计一个算法,将它找出来;
 * 不用辅助存储空间,能否设计一个算法实现?
 */
import java.util.Random;
import java.util.Scanner;

public class 唯一成对的数 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();//数组大小
        int[] nums = new int[n];
        //按1---(n-1)个数字依次存入数组中
        for (int i = 0; i < n - 1; i++) {
            nums[i] = i + 1;
        }
        //数组最后一个元素用随机数来确定,用来确定哪个数会是成对
        nums[n - 1] = new Random().nextInt(n - 1) + 1;
        //随机一个index下标,用于与最后一个元素交换位置
        int index = new Random().nextInt(n - 1);

        // swap 位置
        int temp = nums[n - 1];
        nums[n - 1] = nums[index];
        nums[index] = temp;

        // foreach 出来看一下数组
        for (int i : nums) {
            System.out.print(i + " ");
        }
        System.out.println();
        /*
            知识点1:任何数异或0等于数本身
            知识点2:数异或自己等于0, 即A^A=0, 可用于消除两两重复的数

            假设 n = 1001 那么就存1到1000的数进数组,最后一个数用于确定哪个数字是一对
            解题思路: A^A^B^C^C = B 可知异或可以消除两两重复的数
            那么,我们题目要求的是,找出两两重复的数,而不是消除它,脑筋急转弯
            我们可以通过 1^2^...k..^1000 ^(1^2^....k......k.^1000)
            那么因为数值1,2,3,....n都成对存在而消除了,但是却有3个k ,
            k^k^k ===>  k^k = 0,0^k = k,这就可以得出结果了
         */
        int result = 0;
        for (int i = 1; i <= n - 1; i++) {
            result ^= i;
        }
        for (int i = 0; i < n; i++) {
            result ^= nums[i];
        }
        System.out.println(result);
    }
}

相关文章

  • 唯一成对的数

  • 找出数组中唯一不同的数

    一个数组中只有一个数是唯一的,其他数都是成对出现,找出这个唯一的数 要求时间复杂度为o(n),空间复杂度为o(1)...

  • 2021-08-12《汉声数学》2—奇数和偶数

    一、什么是奇数和偶数 能凑成对的数就是偶数,不能凑成对的数就是奇数。可以直接告诉孩子奇数和偶数的概念。 二、奇数和...

  • 1.2 题解:如何找数组中唯一成对的那个数

    Chapter1: 位运算的奇技淫巧 2. 题解:如何找数组中唯一成对的那个数 题目 1-1000这1000个数放...

  • 真假唯一数,PHP唯一数,Java唯一数,Node唯一数

    在真实的业务场景中生成唯一数是很常用的功能,也是面试必考题。最近面试一个PHP开发岗位,无意中聊到这个话题,然后顺...

  • 爱奇艺-笔试刷题2018-07-21

    题目描述: 思路如下: 其实就是找给定范围内的数,组成对(A, B)使得 AB为完全平方数枚举A B首先建立素数表...

  • 成对

    天和地成一对 日和月成一对 我和你成一对 天地于是相应 日月于是交辉 有感于对联文化课20180328

  • GAMS

    验证模型正确性 运算求解唯一:出现 "optimal solution"唯一解 方程数=变量数这里有7个变量被设置...

  • 电机极数和极对数p

    电机主磁极的数目叫极数,电机主磁极总是成对出现并且以间隔形式(N,S极间隔)均匀分布。电机极数除以2即得到电机极对...

  • HTML+CSS基础小知识汇总(二)

    第二组 支持多行输入的文本域::textarea标签 成对出现(之间可以输入默认值) cols:多行输入的列数;r...

网友评论

    本文标题:唯一成对的数

    本文链接:https://www.haomeiwen.com/subject/nvdfnctx.html