Leetcode解法学习

  1. 基于排列构建数组,方法之原地修改。
class Solution {
public:
    vector<int> buildArray(vector<int>& nums) {
        int n = nums.size();
        // 第一次遍历编码最终值
        for (int i = 0; i < n; ++i){
            nums[i] += 1000 * (nums[nums[i]] % 1000);
        }
        // 第二次遍历修改为最终值
        for (int i = 0; i < n; ++i){
            nums[i] /= 1000;
        }
        return nums;
    }
};
```cpp
class Solution {
public:
    vector<int> buildArray(vector<int>& nums) {
        // 低位和高位,低位为原始值,高位变为最终值
        for (int i=0; i<nums.size(); ++i) {
            nums[i] += nums[nums[i] % 1000] % 1000 * 1000;
        }

        for (int i=0; i<nums.size(); ++i) {
            nums[i] = nums[i] / 1000;
        }

        return nums;
    }
};

你可能感兴趣的:(leetcode,算法,职场和发展)