滴滴xor时间复杂度O(n)

    public static void main(String []args){
        Scanner scan=new Scanner(System.in);
        String arr=scan.nextLine();
        int n=Integer.parseInt(arr);
        String sl=scan.nextLine();
        String[] st = sl.split(" ");
        Map<Integer,Integer> map=new HashMap<>();
        int result=0;
        int xor=0;
        for(int i=0;i<st.length;i++){
        	if(Integer.parseInt(st[i])==0){
        		result++;
        		xor=0;
        		map.clear();
        	}else{ 	
        		xor=xor^Integer.parseInt(st[i]);
        		if(xor==0){
        			result++;
        			xor=0;
        			map.clear();
        		}else if(map.size()!=1&&map.containsKey(xor)){
        			result++;
        			xor=0;
        			map.clear();
        		}else {
        			map.put(xor, 1);
        		}
        	}
        }
    	System.out.println(result);
    }
#滴滴#
全部评论
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner s = new Scanner(System.in); while(s.hasNext()){ int n = s.nextInt(); int xor = 0; int count = 0; for(int i = 0; i< n; i++){ int a = s.nextInt(); xor ^= a; if(a == 0 || xor ==0){ count ++; xor =0; } } System.out.println(count); } } }
点赞 回复 分享
发布于 2017-09-10 17:22
大佬能结构化一下顺便附上个思路解答吗,谢谢咯~
点赞 回复 分享
发布于 2017-09-10 17:21
代码也不对,0  1 2 5 7 应该输出2,你这个代码输出1
点赞 回复 分享
发布于 2017-09-10 19:26
源码有点问题, 错误例子: 7 3 0 3 2 2 4 4 2
点赞 回复 分享
发布于 2017-09-10 20:41
修改后: public static void main(String[] args) { Scanner cin = new Scanner(System.in); int n = cin.nextInt(); int[] a = new int[n]; for(int i=0;i<n;i++){ a[i] = cin.nextInt(); } HashMap<Integer, Integer> maps = new HashMap<>(); int xor = 0; int result = 0; for(int i=0;i<n;i++){ if (a[i]==0) { result ++; xor = 0; maps.clear(); }else{ xor = xor ^ a[i]; if (xor==0) { result ++; maps.clear(); }else if (maps.containsKey(xor)){ result ++; xor = 0; //此处增加 maps.clear(); }else{ maps.put(xor, 1); } } } System.out.println(result); }
点赞 回复 分享
发布于 2017-09-10 20:43
一样的方法,不过我用的Set
点赞 回复 分享
发布于 2017-09-10 20:53
为什么是对比之前这个子序列的所有xor? else if(map.size()!=1&&map.containsKey(xor)) 而不是对比之前一个状态的xor? 哪位大神解释一下?十分感谢
点赞 回复 分享
发布于 2017-09-11 14:58

相关推荐

10-11 17:45
门头沟学院 Java
走吗:别怕 我以前也是这么认为 虽然一面就挂 但是颇有收获!
点赞 评论 收藏
分享
10-10 17:54
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务