1. Two Sum查找列表中两数加和等于特定值Python & Java

给定一个整数数组,返回两个数字的位置,以便它们加起来成为一个特定值。

假设每个输入都只有一个解决方案,并且不会两次使用同一元素。
Input: [2, 7, 11, 15],target:9
Output:[0, 1]

因为肯定会有两个数相加等于target, 并且是有序list, 所以遍历list里面的数时按顺序就可以

Method 1 两层循环遍历list

每次对第i个数字进行操作, 判断其后面的数与它相加是否等于target

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        for i in range(len(nums)):
            for j in range(i+1,len(nums)):
                if nums[i]+nums[j]==target:
                    return [i,j]
'''
nums=[1,2,3,4] target=7
i=1>>j=2,3,4 加和不等于7
i=2>>j=3,4 ...
i=3>>j=4 加和等于7
'''

时间复杂度为1(n-1)+2(n-2)+...(n-1)1的累加

Method 2 单层循环字典定位

建立一个字典temp, i表示在nums中的位置, j表示数值, 如果target-j的值不存在字典里,那么就把temp[j]=i存入字典, 如果存在就返回i和target-j在字典中对应的value也就是i值

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值