LeetCode 1652. 拆炸弹
原题链接
简单
作者:
胡歌-此生不换
,
2022-09-24 14:11:45
,
所有人可见
,
阅读 95
class Solution {
public:
vector<int> decrypt(vector<int>& nums, int k)
{
int n = nums.size();
vector<int> s;
s.push_back(0);
for(auto x: nums) s.push_back(x);
for(auto x: nums) s.push_back(x);
for(auto x: nums) s.push_back(x);
for(int i = 1; i <= 3 * n; i++) s[i] += s[i - 1];
// for(int i = 1; i <= 3 * n; i++) cout << s[i] << ' ';
vector<int> ans(n); // 得开空间哦,不然下面要用 ans.push_back();
if(k > 0)
{
for(int i = 0; i < n; i++) // n + i + 1 是当前元素在 s 数组里面的下标。s 狐族的长度是 3 * n + 1
ans[i] = s[(n + i + 1) + k] - s[(n + i + 1)];
}
else if(k < 0)
{
for(int i = 0; i < n; i++)
ans[i] = s[(n + i + 1) - 1] - s[(n + i + 1) - (-k) - 1]; // 注意这个是 - (-k) 哦
}
else if(k == 0)
{
for(int i = 0; i < n; i++)
ans[i] = 0;
}
return ans;
}
};