美文网首页
滴滴校招-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