File tree Expand file tree Collapse file tree 4 files changed +70
-1
lines changed
lcof2/剑指 Offer II 010. 和为 k 的子数组 Expand file tree Collapse file tree 4 files changed +70
-1
lines changed Original file line number Diff line number Diff line change 4444
4545<!-- 这里可写通用的实现逻辑 -->
4646
47+ 数组中既有正数又有负数,无法使用双指针。可以利用前缀和思想,快速判断子数组的和
48+
4749<!-- tabs:start -->
4850
4951### ** Python3**
5052
5153<!-- 这里可写当前语言的特殊实现逻辑 -->
5254
5355``` python
54-
56+ class Solution :
57+ def subarraySum (self , nums : List[int ], k : int ) -> int :
58+ d = defaultdict(int , {0 : 1 })
59+ ans, sum = 0 , 0
60+ for num in nums:
61+ sum += num
62+ ans += d[sum - k]
63+ d[sum ] += 1
64+ return ans
5565```
5666
5767### ** Java**
5868
5969<!-- 这里可写当前语言的特殊实现逻辑 -->
6070
6171``` java
72+ class Solution {
73+ public int subarraySum (int [] nums , int k ) {
74+ Map<Integer , Integer > map = new HashMap<> ();
75+ int ans = 0 , sum = 0 ;
76+ map. put(0 , 1 );
77+ for (int num : nums) {
78+ sum += num;
79+ ans += map. getOrDefault(sum - k, 0 );
80+ map. merge(sum, 1 , Integer :: sum);
81+ }
82+ return ans;
83+ }
84+ }
85+ ```
6286
87+ ### ** Go**
88+
89+ ``` go
90+ func subarraySum (nums []int , k int ) int {
91+ m := map [int ]int {0 : 1 }
92+ sum , ans := 0 , 0
93+ for _ , num := range nums {
94+ sum += num
95+ ans += m[sum-k]
96+ m[sum]++
97+ }
98+ return ans
99+ }
63100```
64101
65102### ** ...**
Original file line number Diff line number Diff line change 1+ func subarraySum (nums []int , k int ) int {
2+ m := map [int ]int {0 : 1 }
3+ sum , ans := 0 , 0
4+ for _ , num := range nums {
5+ sum += num
6+ ans += m [sum - k ]
7+ m [sum ]++
8+ }
9+ return ans
10+ }
Original file line number Diff line number Diff line change 1+ class Solution {
2+ public int subarraySum (int [] nums , int k ) {
3+ Map <Integer , Integer > map = new HashMap <>();
4+ int ans = 0 , sum = 0 ;
5+ map .put (0 , 1 );
6+ for (int num : nums ) {
7+ sum += num ;
8+ ans += map .getOrDefault (sum - k , 0 );
9+ map .merge (sum , 1 , Integer ::sum );
10+ }
11+ return ans ;
12+ }
13+ }
Original file line number Diff line number Diff line change 1+ class Solution :
2+ def subarraySum (self , nums : List [int ], k : int ) -> int :
3+ d = defaultdict (int , {0 : 1 })
4+ ans , sum = 0 , 0
5+ for num in nums :
6+ sum += num
7+ ans += d [sum - k ]
8+ d [sum ] += 1
9+ return ans
You can’t perform that action at this time.
0 commit comments