Day49

最近又有点懒了,但是脑子有尽力在用,学习进度也不断的进步,加油OVO

Day49

 

表单重复提交,

当用户提交完请求,浏览器会记录下最后一次请求的全部信息,当用户按下F5时,就会发起浏览器最后一次请求。

算法题:

有一个正整数数组 arr,现给你一个对应的查询数组 queries,其中 queries[i] = [Li, Ri]

对于每个查询 i,请你计算从 LiRiXOR 值(即 arr[Li] **xor** arr[Li+1] **xor** ... **xor** arr[Ri])作为本次查询的结果。

并返回一个包含给定查询 queries 所有结果的数组。

package com.sorrymaker.day09;

import org.junit.Test;

/**
* 子数组异或查询,难度中等,自己存粹想出来的,好爽啊啊啊啊啊啊啊啊啊啊。
* @Author nextGame
* @Date 2021/5/12 21:01
* @Version 1.0
*/
public class Test01 {
   @Test
   public void test() {
       int[] arr = {1, 11, 1};
       int[][] queries = {{0, 2}, {0, 2}, {2, 2}, {0, 2}};
       int[] ints = xorQueries(arr, queries);
       for (int i : ints) {
           System.out.println(i);
      }
  }

   public int[] xorQueries(int[] arr, int[][] queries) {
       int[] count = new int[queries.length];
       int num1 = 0;
       int num2 = 0;

       for (int i = 0; i < queries.length; i++) {
           for (int i1 = 0; i1 < queries[i].length; i1++) {
               num1 = queries[i][i1];
               if (i1 == 0) {
                   num2 = num1;
              }
          }
           if (num1==num2) {
               count[i] = arr[num1];
          } else if (num1 == num2 + 1) {
               count[i] = arr[num1] ^ arr[num2];
          } else if (arr[num2] < arr[num1] || num1 != num2 + 1) {
               int num3 = 0;
               for (int j = num2; j <= num1; j++) {
                   num3 = num3 ^ arr[j];
              }
               count[i] = num3;
          }
      }
       return count;
  }
}
posted @ 2021-05-12 21:48  独眼龙  阅读(123)  评论(0)    收藏  举报