首页 > 其他 > 详细

1.两数之和

时间:2019-12-30 22:02:14      阅读:73      评论:0      收藏:0      [点我收藏+]

太菜了,第一题提交了6次才过。

题目:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

思路:
数组带下标排序,二分查找

class Solution:
    def findtarget(self,head,target): # 二分查找
        tail = self.length-1
        while head<=tail:
            mid = (head+tail)//2
            if self.list_target[mid][0]<target:
                head = mid+1
            elif self.list_target[mid][0]>target:
                tail = mid-1
            elif self.list_target[mid][0]==target:
                return self.list_target[mid][1] 
        return -1
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        self.length = len(nums)
        list_target = [(nums[i],i) for i in range(self.length)]
        self.list_target = sorted(list_target,key=lambda x: x[0])
        for i in range(self.length-1): # 截止到tail的前一个
                index = self.findtarget(i+1,target-self.list_target[i][0]) # 从下一个开始找
                if index>=0: # 下标大于等于0,写成大于,错了一次
                    return [self.list_target[i][1],index]
        

1.两数之和

原文:https://www.cnblogs.com/Lzqayx/p/12121814.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!