美文网首页
滴滴校招-xor-java

滴滴校招-xor-java

作者: Jacinth | 来源:发表于2017-09-10 23:22 被阅读0次

    package didi;
    
    /*解题思路:
     *一个数组划分成多个连续的子数组,然后保证每个子数组里的数字进行异或后为0,
     *如果子数组里只有一个元素0,也认为是符号题目要求的,让你求最多可以划分出多
     *少个这样的子数组。
     *从当前的index从后往前累积异或,用来判断是否是某个区间的终点,一旦为0就break了.
     *从前往后每次都要异或其他项,比如4 0 2 2,每次都要异或4那就没有结果了.*/
    import java.util.*;
    
    public class xor {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            int n = in.nextInt();
            int[] a = new int[n];
            for (int i = 0; i < n; i++) {
                a[i] = in.nextInt();
            }
    
            int lastId = 0;
            int count = 0;
            for (int i = 0; i < n; i++) {
                int temp = 0;
                for (int j = i; j >= lastId; j--) {// 从当前的index从后往前累积异或,
                                                   // 用来判断是否是某个区间的终点,一
                                                   // 旦为0就break了.
                    temp = temp ^ a[j];
                    if (temp == 0) {
                        lastId = i + 1;
                        count++;
                        break;
                    }
                }
            }
            System.out.println(count);
        }
    }
    

    相关文章

      网友评论

          本文标题:滴滴校招-xor-java

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