2021.5.11

分类:Java,学习记录 日期:2021-05-11 作者:luckydog 浏览:315

当遇到不会做的题目时,记得动手写,记得仔细找规律
多多试一下总会找到好的解题方法的

/*

给你一个整数数组 perm ,它是前 n 个正整数的排列,且 n 是个 奇数 。
它被加密成另一个长度为 n - 1 的整数数组 encoded ,满足 encoded[i] = perm[i] XOR perm[i + 1] 。
比方说,如果 perm = [1,3,2] ,那么 encoded = [2,1] 。
给你 encoded 数组,请你返回原始数组 perm 。题目保证答案存在且唯一。
示例 1:
输入:encoded = [3,1]
输出:[1,2,3]
解释:如果 perm = [1,2,3] ,那么 encoded = [1 XOR 2,2 XOR 3] = [3,1]
*/
import java.util.*;
public class 解密数组 {

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    String[] s = in.nextLine().split(" ");
    int[] encoded = new int[s.length];
    for(int i=0;i<s.length;i++) {
        encoded[i] = Integer.valueOf(s[i]);
    }
    
    int x = 0;
    int[] ans = new int[encoded.length+1];
    
    for(int i=1;i<=encoded.length+1;i++) {
        x ^= i;
    }
    for(int i=encoded.length-1;i>0;i-=2) {
        x^=encoded[i];
    }

// x 即首位元素

    ans[0] = x;
    int j = 0;
    for(int i=1;i<ans.length;i++,j++) {
        ans[i] = encoded[j] ^ ans[i-1]; 
    }
    System.out.println(Arrays.toString(ans));
}

}

评论 (已有 2 条评论)

    luckydog 2021-05-16 22:27回复

    Hello

    luckydog 2021-08-09 20:57回复

发表评论

昵称:  
邮箱:  
网址: