Python学习日记——两数之和

Python学习日记003——两数之和

题目来源:LeetCode题库——两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
注:你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

Example1:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
链接:https://leetcode-cn.com/problems/two-sum

两数之和——暴力穷举法
list = [ [0],[1],[2],[3],[4],[5],[6]……[n] ]
暴力穷举法的解题思路大致如下:
Step1:对于list[0],我们可以进行以下计算:list[0] + list[1]、list[0] + list[2]、list[0] + list[3]、list[0] + list[4]……list[0] + list[n+1]。
Step2:对于list[1],因为在Step1中我们已经进行过list[0] + list[1]的计算,因此在Step2中无需进行list[1] + list[0]的计算。因此在Step2中,我们只需进行以下计算:list[1] + list[2]、list[1] + list[3]、list[1] + list[4]……list[1] + list[n+1]
Step3:对于list[2],因为在Step1、2中我们已经进行过list[0] + list[2]、list[1]+list[2]的计算,因此在Step3中,我们只需进行以下计算:list[2] + list[3]、ist[2] + list[4]、ist[2] + list[5]……ist[2] + list[n+1]
……
……
……
Step(n):对于list[n],在前序步骤中,我们已经进行过list[0] + list[n]、list[1] + list[n]、list[2] + list[n]……list[n-1] + list[n]的计算。因此在Step(n)中,我们只需进行以下计算:list[n] + list[n+1]

对于上述思路,我们可以通过循环语句来实现:
通过引入两个变量,我在此将这两个变量称为主变量副变量,主变量相当于“将军”,它控制着每一轮计算向前前进,即按照依次取数组内的每一个元素、第二个元素、第三个元素……副变量相当于“大兵”,数组内元素依次排序,每一个主变量的所有元素都是它的副变量,都要与其进行相加运算。两个变量控制着循环向前发展。
需要注意的是,题设条件表明,同一个元素不能使用两次,因此在循环条件的控制方面需要多加注意。
暴力穷举法的实现过程如下:

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        """暴力穷举法"""
        for m in range(len(nums)):   #主变量
            for n in range(m+1,len(nums)):  #副变量
                if nums[m] + nums[n] == target:   #判断两数之和
                    return [m,n]

学习过程中,欢迎指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值