updated productExceptSelf
This commit is contained in:
1 parent
e6fa2e09e2
commit
851d5129e3
1 file changed
+10
-17
@@ -2,22 +2,15 @@
|
|||||||
|
|
||||||
inline std::vector<int> productExceptSelf(std::vector<int> &nums) {
|
inline std::vector<int> productExceptSelf(std::vector<int> &nums) {
|
||||||
int n = nums.size();
|
int n = nums.size();
|
||||||
|
std::vector<int> answer(n, 1);
|
||||||
|
for(int i = 1; i < n; i++) {
|
||||||
|
answer[i] = answer[i-1] * nums[i-1];
|
||||||
|
}
|
||||||
|
int suffix = 1;
|
||||||
|
for(int i = n-1; i > -1; i--) {
|
||||||
|
answer[i] *= suffix;
|
||||||
|
suffix *= nums[i];
|
||||||
|
}
|
||||||
|
return answer;
|
||||||
}
|
}
|
||||||
|
|
||||||
// def productExceptSelf(nums):
|
|
||||||
// n = len(nums)
|
|
||||||
// answer = [1] * n
|
|
||||||
|
|
||||||
// #Первый проход : префиксные произведения
|
|
||||||
// #answer[i] содержит произведение всех элементов слева от i
|
|
||||||
// for i in range(1, n):
|
|
||||||
// answer[i] = answer[i-1] * nums[i-1]
|
|
||||||
|
|
||||||
// #Второй проход : суффиксные произведения
|
|
||||||
// #suffix накапливает произведение элементов справа
|
|
||||||
// suffix = 1
|
|
||||||
// for i in range(n-1, -1, -1):
|
|
||||||
// answer[i] *= suffix # умножаем на произведение справа
|
|
||||||
// suffix *= nums[i] # обновляем суффиксное произведение
|
|
||||||
|
|
||||||
// return answer
|
|
||||||
Reference in new issue
Block a user