mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
0454.四数相加II:简化Swift实现
This commit is contained in:
@ -44,7 +44,7 @@ D = [ 0, 2]
|
|||||||
|
|
||||||
1. 首先定义 一个unordered_map,key放a和b两数之和,value 放a和b两数之和出现的次数。
|
1. 首先定义 一个unordered_map,key放a和b两数之和,value 放a和b两数之和出现的次数。
|
||||||
2. 遍历大A和大B数组,统计两个数组元素之和,和出现的次数,放到map中。
|
2. 遍历大A和大B数组,统计两个数组元素之和,和出现的次数,放到map中。
|
||||||
3. 定义int变量count,用来统计a+b+c+d = 0 出现的次数。
|
3. 定义int变量count,用来统计 a+b+c+d = 0 出现的次数。
|
||||||
4. 在遍历大C和大D数组,找到如果 0-(c+d) 在map中出现过的话,就用count把map中key对应的value也就是出现次数统计出来。
|
4. 在遍历大C和大D数组,找到如果 0-(c+d) 在map中出现过的话,就用count把map中key对应的value也就是出现次数统计出来。
|
||||||
5. 最后返回统计值 count 就可以了
|
5. 最后返回统计值 count 就可以了
|
||||||
|
|
||||||
@ -139,7 +139,7 @@ class Solution(object):
|
|||||||
return count
|
return count
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Go:
|
Go:
|
||||||
```go
|
```go
|
||||||
@ -229,28 +229,24 @@ class Solution {
|
|||||||
Swift:
|
Swift:
|
||||||
```swift
|
```swift
|
||||||
func fourSumCount(_ nums1: [Int], _ nums2: [Int], _ nums3: [Int], _ nums4: [Int]) -> Int {
|
func fourSumCount(_ nums1: [Int], _ nums2: [Int], _ nums3: [Int], _ nums4: [Int]) -> Int {
|
||||||
// key:a+b的数值,value:a+b数值出现的次数
|
// ab和: ab和出现次数
|
||||||
var map = [Int: Int]()
|
var countDic = [Int: Int]()
|
||||||
// 遍历nums1和nums2数组,统计两个数组元素之和,和出现的次数,放到map中
|
for a in nums1 {
|
||||||
for i in 0 ..< nums1.count {
|
for b in nums2 {
|
||||||
for j in 0 ..< nums2.count {
|
let key = a + b
|
||||||
let sum1 = nums1[i] + nums2[j]
|
countDic[key] = countDic[key, default: 0] + 1
|
||||||
map[sum1] = (map[sum1] ?? 0) + 1
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 统计a+b+c+d = 0 出现的次数
|
|
||||||
var res = 0
|
// 通过-(c + d)作为key,去累加ab和出现的次数
|
||||||
// 在遍历大num3和num4数组,找到如果 0-(c+d) 在map中出现过的话,就把map中key对应的value也就是出现次数统计出来。
|
var result = 0
|
||||||
for i in 0 ..< nums3.count {
|
for c in nums3 {
|
||||||
for j in 0 ..< nums4.count {
|
for d in nums4 {
|
||||||
let sum2 = nums3[i] + nums4[j]
|
let key = -(c + d)
|
||||||
let other = 0 - sum2
|
result += countDic[key, default: 0]
|
||||||
if map.keys.contains(other) {
|
|
||||||
res += map[other]!
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return res
|
return result
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user