Skip to content

Commit 5598320

Browse files
authored
docs: add a description of the solution to lc problem: No.0238 (#771)
No.0238.Product of Array Except Self
1 parent 1e87fb5 commit 5598320

File tree

1 file changed

+57
-0
lines changed
  • solution/0200-0299/0238.Product of Array Except Self

1 file changed

+57
-0
lines changed

solution/0200-0299/0238.Product of Array Except Self/README.md

+57
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,63 @@
4646

4747
<!-- 这里可写通用的实现逻辑 -->
4848

49+
**暴力:**
50+
51+
正常计算除自身之外的乘积。
52+
53+
```txt
54+
PRODUCT_EXCEPT_SELF(A)
55+
n = A.length
56+
let r[0..n]be a new array
57+
for i = 0 in n
58+
s = 1
59+
for j = 0 in n
60+
if j == i
61+
continue
62+
s *= A[j]
63+
r[i] = s
64+
return r
65+
```
66+
67+
**左右乘积:**
68+
69+
分别从左至右,从右至左累乘一次即可。
70+
71+
```txt
72+
PRODUCT_EXCEPT_SELF(A)
73+
n = A.length
74+
let r[0..n]be a new array
75+
p = 1
76+
q = 1
77+
for i = 0 in n
78+
r[i] = p
79+
p *= A[i]
80+
for i = n - 1 in 0 downto
81+
r[i] *= q
82+
q *= A[i]
83+
return r
84+
```
85+
86+
可行性说明:
87+
88+
`nums = [1, 2, 3, 4]` 为例。
89+
90+
`r[i]` 的数值由 `nums[0..i - 1]` 的数值乘积所决定。在遍历结束后,最后一个元素得到了最终结果(因为累乘了前方所有数值)。
91+
92+
```txt
93+
nums: [1, 2, 3, 4]
94+
r: [1, 1, 2, 6]
95+
p: [1, 2, 6, 24]
96+
```
97+
98+
而其他位置的数值,距离结果还差什么呢,那就是相对自身,后方所有数值的乘积,于是就有了第二次,从后往前的过程。
99+
100+
```txt
101+
nums: [1, 2, 3, 4]
102+
r: [24, 12, 8, 6]
103+
p: [24, 24, 12, 4]
104+
```
105+
49106
<!-- tabs:start -->
50107

51108
### **Python3**

0 commit comments

Comments
 (0)