冷夜长歌 2021-04-01 23:24 采纳率: 100%
浏览 78
已采纳

关于给出1..n个数,其中缺少2个元素,找到那2个缺失的元素

我的想法是这个数组先异或一遍,在和1~n异或一遍,结果放到变量xor里,然后创建两个循环,如果xor^i^j为零,那么i和j就是缺少的数字,但是却不行,这是为什么

package yuangong;

public class FindTwoOfNNumbers {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        int[] digit={
                1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,
                18,19,20,31,32,33,34,35,36,37,38,39,40,
                51,52,53,54,55,56,57,58,59,60,21,22,23,
                24,25,26,27,28,29,30,41,42,43,44,45,46,
                47,48,49,50,61,62,63,64,65,66,67,68,69,
                70,71,72,73,74,75,76,77,78,79,80,81,82,
                83,84,85,86,87,88,89};//1~90缺少11,90
        
        int n=digit.length;
        int xor=0;
        
        for(int i=0;i<n;i++){
            xor=xor^digit[i]^(i+1);
        }
        xor=xor^(n+1)^(n+2);
        int XOR;
        for(int i=1;i<=n+2;i++){        
            for(int j=1;j<=n+2;j++){
                XOR=xor^i^j;
                if((XOR)==0){
                    System.out.println(i+" "+j);
                    break;
                }    
            }
        }
    }
}

  • 写回答

3条回答 默认 最新

  • CSDN专家-三岁丫 2021-04-01 23:56
    关注
      public static void main(String[] args) {
        // TODO 自动生成的方法存根
        int[] digit={
            1,2,3,4,5,6,7,8,9,10,
            13,14,15,16,17,18,19,20,
            21,22,23,24,25,26,27};//1~90缺少11,90
    
        int num = 0;
        for (int i = 0; i < 30; i ++) {
          // num >= digit.length 是因为如果缺少像 30 这种的话,就会有问题
          // num 的作用就是 digit 的偏移,因为要保证 i + 1 和 digit[num] 对得上
          if (num >= digit.length || digit[num] != i + 1) {
            System.out.println((i + 1));
          } else {
            num ++;
          }
        }
      }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路
  • ¥15 经gamit解算的cors站数据再经globk网平差得到的坐标做形变分析
  • ¥15 GD32 SPI通信时我从机原样返回收到的数据怎么弄?
  • ¥15 phython读取excel表格报错 ^7个 SyntaxError: invalid syntax 语句报错
  • ¥20 @microsoft/fetch-event-source 流式响应问题
  • ¥15 ogg dd trandata 报错
  • ¥15 高缺失率数据如何选择填充方式
  • ¥50 potsgresql15备份问题