LeetCode : No1 Two Sum Python

本文介绍了一个解决LeetCode上经典问题“两数之和”的高效算法。通过使用Python内置的排序功能,结合双指针技术,可以在较短时间内找到目标值对应的两个数及其在原数组中的位置。

题目链接:

https://leetcode.com/problems/two-sum/


考虑到效率问题,通过两层循环的方式,时间复杂度为O(n^2),时间溢出。


解法1:

利用python 自带的sorted排序,然后根据两数之和为target逐步从数组的两头向中间寻找,直到两数之后为target,再反定位数字在原数组的位置。


耗时:63ms


class Solution:
    # @return a tuple, (index1, index2)
    def twoSum(self, num, target):
        sortedNum = sorted(num)
        start = 0
        end = len(sortedNum)-1
        Sum = sortedNum[start]+sortedNum[end]
        while  Sum != target:
            if Sum > target:
                end = end -1
            else:
                start = start +1
            Sum = sortedNum[start]+sortedNum[end]

        Min = num.index(sortedNum[start])
        num[Min] = -float("inf")
        Max = num.index(sortedNum[end])

        if Min < Max:
            return (Min+1,Max+1)
        else:
            return (Max+1,Min+1)






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值