https://leetcode.com/problems/defuse-the-bomb/description/
拆除炸彈遊戲
給定長度為 n
的環狀陣列 code
和密鑰 k
k > 0
將第 i
個數字替換為後 k
個數字的總和k < 0
將第 i
個數字替換為前 k
個數字的總和k == 0
將第 i
個數字替換為 0依照題意即可
C++ 參考答案:
class Solution
{
public:
vector<int> decrypt(vector<int> &code, int k)
{
const int n = code.size();
vector<int> ans(n);
if (k == 0)
return ans;
int sign = 1;
if (k < 0)
{
k *= -1;
sign = -1;
}
for (int i = 0; i < n; ++i)
{
for (int j = 1; j <= k; ++j)
{
ans[i] += code[(i + j * sign + n) % n];
}
}
return ans;
}
};
Go 參考答案:
func decrypt(code []int, k int) []int {
n := len(code)
ans := make([]int, n)
if k == 0 {
return ans
}
sign := 1
if k < 0 {
k = -k
sign = -1
}
for i := 0; i < n; i++ {
for j := 1; j <= k; j++ {
ans[i] += code[(i+j*sign+n)%n]
}
}
return ans
}
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up