LeetCode 01: Two Sum
题目链接:
https://leetcode.cn/problems/two-sum/
解题思路:
这个问题可以使用双指针的思路来解决,具体步骤如下:

  • 定义两个指针 left 和 right 分别指向数组的开头和结尾。
  • 每次计算左右指针所指向元素的和 sum,如果 sum 等于目标数 target,则返回左右指针的索引。如果 sum 大于目标数 target,则右指针向左移动一位,否则左指针向右移动一位。
  • 重复执行上述步骤,直到找到两个数的和等于目标数 target 或者左右指针相遇。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
func twoSum(_ nums: [Int], _ target: Int) -> [Int] {
// 定义左右指针
var left = 0, right = nums.count - 1
// 循环直到左右指针相遇
while left < right {
// 计算左右指针所指向的两数之和
let sum = nums[left] + nums[right]
// 如果等于目标值
if sum == target {
// 返回数组中两个数的索引(注意题目从1开始计
return [left+1, right+1] 数)
} else if sum < target { // 如果小于目标值,移动左指针
left += 1
} else { // 如果大于目标值,移动右指针
right -= 1
}
}
// 找不到符合要求的数,返回空数组
return []
}