首页 > 其他 > 详细

leetcode-1 两数之和

时间:2021-07-23 15:54:57      阅读:15      评论:0      收藏:0      [点我收藏+]

感觉只能遍历 N方的复杂度。

如果想排序  排序已经NlnN了  之后彷佛没有简单很多。

但是答案想要小于N方  那么我还是排序

 

又遇到了问题  排序后怎么知道原来的下标呢?  排序就把原来下标弄丢了 ,想记录的话又需要一个数组来  。

但是我看到只有一个答案  说明数组肯定不重复  那么 就简单了 遍历呗。

解答如下:

 
class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        rel = []
        nums2 = sorted(nums)       #将数组排序
        high = len(nums2)-1
        low = 0
        while low<high:             #从头尾开始 如果头尾之和小于目标 就头挪挪 大于目标就挪挪 最终找到那两个元素
            if nums2[low]+nums2[high] == target:
                break
            elif nums2[low]+nums2[high] > target:
                high -= 1
            else:
                low += 1
        for i in range(len(nums)):       #因为答案只有一个 说明没有重复的元素  所以才敢采取这种遍历方法
            if nums[i] == nums2[low] :
                rel.append(i)
            elif nums[i] == nums2[high] :#   这里的else十分的精髓  避免了两个结果元素值一模一样的情况。如【33】->6
                rel.append(i)
            if len(rel) == 2:
                return rel


作者:yizhu-jia
链接:https://leetcode-cn.com/problems/two-sum/solution/6865-bu-zhi-dao-kuai-pai-ying-bu-ying-ga-jn1q/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

leetcode-1 两数之和

原文:https://www.cnblogs.com/xiaoli1996/p/15048087.html

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