uacs2024

导航

leetcode 1652. 拆炸弹 未解决

1652. 拆炸弹

原本是简单题,但是k < 0的情况由于选用的方法不好,浪费太多时间了。代码也有很多冗余

class Solution {
public:
    vector<int> decrypt(vector<int>& code, int k) {
        int size = code.size();
        vector<int> res(size,0);
        if(k == 0)  return res;
        if(k > 0){
            for(int i = 0;i < k;i++)  res[0] += code[i+1];
            for(int i = 1;i < size - k;i++){
                res[i] = res[i-1] - code[i] + code[i+k];
            }
            for(int i = size - k;i < size;i++){
                res[i] = res[i-1] - code[i] + code[i-size+k];
            }
        }
        else{
            k = -k;
            for(int i = size-1;i >= size - k;i--)  res[size-1] += code[i-1];
            for(int i = size - 2;i >= k;i--){
                res[i] = res[i+1] - code[i] + code[i-k];
            }
            for(int i = k-1;i >= 0;i--){
                res[i] = res[i+1] - code[i] + code[size-k+i];
            }
        }
        return res;
    }
};

 

posted on 2024-12-02 20:42  ᶜʸᵃⁿ  阅读(12)  评论(0)    收藏  举报