leetcode1 Two Sum

本文介绍了一种解决两数之和问题的有效算法。通过排序数组并使用双指针法寻找目标值,最终返回两个数的下标。文章详细解释了算法步骤,并附带Python实现代码。

Given an array of integers, find two numbers such that they add up to a specific target number.

The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that your returned answers (both index1 and index2) are not zero-based.

You may assume that each input would have exactly one solution.

Input: numbers={2, 7, 11, 15}, target=9
Output: index1=1, index2=2

思路:
将原有数组排序储存在新的数组temp中。
设置两个标识左标识i和右标识j
如果temp[i]+temp[j]<target
i++
如果temp[i]+temp[j]>target
j
原本用了nums.index(temp[i]+1)来找下标,但是这样忽略了两个value相同时候index()会定位在第一个value的位置上导致报错~
最后用一个遍历来定位

python代码如下:

class Solution(object):
    def twoSum(self, nums, target):
        temp=sorted(nums)
        i=0
        j=len(temp)-1
        while((temp[i]+temp[j])!=target) & i<j:
            if temp[i]+temp[j]<target:
                i=i+1
            elif temp[i]+temp[j]>target:
                j=j-1
            else:
                break

        result=[]
        for k in range(len(nums)):
            if nums[k]==temp[i]:
                result.append(k+1)
            elif nums[k]==temp[j]:
                result.append(k+1)
        return result
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值