Problem: 2683. 相邻值的按位异或
思路
- 假设数组第一个元素为 
0或1。 - 根据 
derived数组的定义,依次推导原始数组original的其他元素。例如: 
- 如果 
derived[0] = original[0] ^ original[1],那么original[1] = original[0] ^ derived[0]。 - 得出
original[i] = original[i - 1] ^ drived [i - 1]。 - 以此类推,直到推导出 
original的所有元素。 
- 验证最后一个元素:
 
- 根据 
derived数组的最后一个元素的定义(derived[n - 1] = original[n - 1] ^ original[0]),验证推导出的original数组是否满足这个条件。 
复杂度
- 时间复杂度: O ( n ) O(n) O(n)
 - 空间复杂度: O ( n ) O(n) O(n)
 
Code
class Solution {
public:
    bool doesValidArrayExist(vector<int>& derived) {
        int n = derived.size();
        // 假设数组第一个数为0
        vector<int> original(n, 0);
        for (int i = 1; i < n; i++) {
            original[i] = derived[i - 1] ^ original[i - 1];
        }
        if ((original.back() ^ original[0]) == derived.back()) {
            return true;
        }
        // 假设第一个数为1
        original.assign(n, 1);
        for (int i = 1; i < n; i++) {
            original[i] = derived[i - 1] ^ original[i - 1];
        }
        return (original.back() ^ original[0]) == derived.back();
    }
};
                
                  
                  
                  
                  
                            
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
              
            
                  
					4487
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
            


            