Merge pull request #705 from qxuewei/master

添加 第454题.四数相加II Swift版本
This commit is contained in:
程序员Carl
2021-09-04 17:00:21 +08:00
committed by GitHub
2 changed files with 49 additions and 2 deletions

View File

@ -266,6 +266,28 @@ var canConstruct = function(ransomNote, magazine) {
};
```
Swift
```swift
func canConstruct(_ ransomNote: String, _ magazine: String) -> Bool {
var record = Array(repeating: 0, count: 26);
let aUnicodeScalarValue = "a".unicodeScalars.first!.value
for unicodeScalar in magazine.unicodeScalars {
// 通过record 记录 magazine 里各个字符出现的次数
let idx: Int = Int(unicodeScalar.value - aUnicodeScalarValue)
record[idx] += 1
}
for unicodeScalar in ransomNote.unicodeScalars {
// 遍历 ransomNote,在record里对应的字符个数做 -- 操作
let idx: Int = Int(unicodeScalar.value - aUnicodeScalarValue)
record[idx] -= 1
// 如果小于零说明在magazine没有
if record[idx] < 0 {
return false
}
}
return true
}
```
-----------------------

View File

@ -220,8 +220,33 @@ var fourSumCount = function(nums1, nums2, nums3, nums4) {
};
```
Swift
```swift
func fourSumCount(_ nums1: [Int], _ nums2: [Int], _ nums3: [Int], _ nums4: [Int]) -> Int {
// key:a+b的数值value:a+b数值出现的次数
var map = [Int: Int]()
// 遍历nums1和nums2数组统计两个数组元素之和和出现的次数放到map中
for i in 0 ..< nums1.count {
for j in 0 ..< nums2.count {
let sum1 = nums1[i] + nums2[j]
map[sum1] = (map[sum1] ?? 0) + 1
}
}
// 统计a+b+c+d = 0 出现的次数
var res = 0
// 在遍历大num3和num4数组找到如果 0-(c+d) 在map中出现过的话就把map中key对应的value也就是出现次数统计出来。
for i in 0 ..< nums3.count {
for j in 0 ..< nums4.count {
let sum2 = nums3[i] + nums4[j]
let other = 0 - sum2
if map.keys.contains(other) {
res += map[other]!
}
}
}
return res
}
```
-----------------------
* 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)