LeetCode——两数之和
程序员文章站
2024-03-08 21:02:04
...
思路
我们要找到i,j,使得num[i]+num[j]=target,然后返回列表[i,j]。
方法一:我们在遇到任何情况时都应该首先考虑暴力解决,即我们使用两个for循环遍历所有数组中两两组合得可能即可,代码如下:
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
List = []
for i in range(len(nums)):
for j in range(i+1,len(nums)):
if nums[i]+nums[j] == target:
List = [i,j]
return List
方法二:使用条件num[i]+num[j]=target。我们从列表得头开始固定一个num[i],然后构造一个数组rest_nums来存储剩下得元素,我们只需要检查元素(target-num[i])是否在rest_nums中即可,下面是代码:
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
j = -1
for i in range(len(nums)-1):
rest_nums = nums[i+1:]
if (target - nums[i]) in rest_nums:
j = rest_nums.index(target-nums[i])
if j >= 0:
return [i,j+i+1]
- Tips:索引问题要注意,方法二相当于把数组拆开进行完操作后在合并,所以索引如果不考虑对,返回得是错
- 具体得,j表示在rest_nums中得索引,rest_nums数组相当于接在num[i]之后得数组。所以当j=0时,所要元素在原数组nums得索引为i+1;j=1时,所要元素在原数组nums得索引为i+2。以此类推。
- 真的不会,举个简单栗子就可以了
上一篇: CentOS虚拟机网络连接失败
推荐阅读