我是靠谱客的博主 俏皮钢笔,最近开发中收集的这篇文章主要介绍力扣Leetcode1 | 两数之和(Two Sum)暴力法、一次哈希表和两次哈希表法双指针法扩展,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

  • 暴力法、一次哈希表和两次哈希表法
  • 双指针法
  • 扩展

暴力法、一次哈希表和两次哈希表法

https://blog.csdn.net/zhushaojiecumt/article/details/102846196
视频:
https://www.bilibili.com/video/BV1Li4y1E7gT?p=1

双指针法

如果列表是无序的,需要先排序,使用双指针,分别指向头、尾。如果两数之和大于target,尾指针前移,如果两数之和小于target,首指针后移。

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        r=zip(nums,range(len(nums)))
        r = sorted(r, key=lambda x:x[0])
        i, j=0,len(nums)-1
        while i<j:
            sum=r[i][0]+r[j][0]
            if sum<target:
                i+=1
            elif sum>target:
                j-=1
            else:
                break
        return [r[i][1],r[j][1]]

leetcode——两数之和(暴力,一遍hash,两遍hash,双指针)

nums = list(enumerate(nums))
nums.sort(key = lambda x:x[1])
i,j = 0, len(nums)-1
while i < j:
    if nums[i][1] + nums[j][1] > target:
        j -= 1
    elif nums[i][1] + nums[j][1] < target:
        i += 1
    else:
        if nums[j][0] < nums[i][0]:
            nums[j],nums[i] = nums[i],nums[j]
        return num[i][0],nums[j][0]

https://zhuanlan.zhihu.com/p/203068013

双指针(方法合集) 逐行解释 python3

扩展

假如不能用现成的hashMap结构,如何自己实现?
双指针法适用的问题有哪些?
两数之和、(接近)三数之和、四数之和的问题?

【leetcode 逐题讲解】 0001 Two sum 力扣 两数之和,讲解了如何实现hashMap

双指针法(N数之和)
【python-leetcode15-双指针】最接近的三数之和

两数之和(two sum)问题通用解法(map法和双指针)

两数之和——双指针法

Python|双指针解决三数之和问题

最后

以上就是俏皮钢笔为你收集整理的力扣Leetcode1 | 两数之和(Two Sum)暴力法、一次哈希表和两次哈希表法双指针法扩展的全部内容,希望文章能够帮你解决力扣Leetcode1 | 两数之和(Two Sum)暴力法、一次哈希表和两次哈希表法双指针法扩展所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部