leetcode 2122. 还原原数组


 1 class Solution {
 2 public:
 3     vector<int> recoverArray(vector<int>& nums) {
 4         multiset<int>s;
 5         int n=nums.size();
 6         sort(nums.begin(),nums.end());
 7         for(int i=0;i)
 8         {
 9             int k=nums[i]-nums[0];//k要为偶数
10             if(!k)continue;
11             if(k&1)continue;
12             vector<int>ans;
13             multiset<int> ts(nums.begin(), nums.end());
14             while(ts.size())
15             {
16                 int p=*ts.begin();
17                 if(ts.find(p+k)!=ts.end())
18                 {
19                     auto pos=ts.find(p+k);
20                     ans.push_back(p+k/2);
21                     ts.erase(ts.begin());
22                     ts.erase(pos);
23                 }
24                 else break;
25             }
26             if(!ts.size())return ans;
27         }
28         return {};
29     }
30 };

相关