欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LeetCode——两数之和

程序员文章站 2024-03-08 21:02:04
...

LeetCode——两数之和

思路

我们要找到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。以此类推。
  • 真的不会,举个简单栗子就可以了
相关标签: LeetCode刷题之路