leetcode0-HASH搜索

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

first try:循环开始指定双起点,不满足则第二起点前进,再次循环,很大重复工作
result:time out
test example :19/20

class Solution:
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        rlist = []
        # nums = []
        # print(len(nums))
        n = len(nums) 
        n >=0
        a = 0
        b = 1
        while True:
            if nums[a]+nums[b] == target:
                rlist.append(a)
                rlist.append(b)
                return rlist
            else:
                if b < n-1:
                    b += 1
                    continue
                else:
                    a += 1
                    b = a+1
                    continue

2nd try:HASH散列在python中的应用--dict,这样就是O(n)
结果:time out 错误在一个keyerror:62
第二次尝试又把python的字典操作复习了一遍
python繁琐工作自动化
python优雅的操作字典:https://www.linuxzen.com/python-you-ya-de-cao-zuo-zi-dian.html

class Solution:
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        rlist = []
        rdict = {}
        n = len(nums)
        for i in nums :
            rdict[nums.index(i)] = i
        print(rdict)
        a = 0
        values = rdict.values()
        while True:
            want = target - rdict[a]
            if want in values:
                print(want)
                ri = {v:k for k,v in rdict.items()}
                rlist.append(a)
                rlist.append(ri[want])
                return rlist
            else:
                a+=1
                continue

keyerror用try-except做了异常处理
随后因为超时原因又做了修改,即 把反向字典的构造放在最开始
结果在处理[3,3]时出现错误,因为字典构造时尊重key的唯一性,造成相同值的覆盖

for i in nums :
    rdict[nums.index(i)] = i
print(rdict)    # 结果不是{3:0,3:1}而是{3:0}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,779评论 0 33
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,421评论 0 2
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,208评论 0 13
  • 今天是11月8日,立冬节气,记者节。早上接到母亲的电话后起床,从17楼的窗外望去,见到了一个多月没有露面的雪山。 ...
    忘川卡隆阅读 819评论 0 2
  • 家也太小色狼,昨天在外面吃大排档,旁边坐着俩年轻女子,儿子跟人家挤眉弄眼的,动手动脚的,我忍了。今天又去大屯公园玩...
    欣欣棒棒糖阅读 174评论 0 0