美文网首页
leetcode0-HASH搜索

leetcode0-HASH搜索

作者: hawu0616 | 来源:发表于2018-07-05 17:12 被阅读0次

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

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

示例:
给定 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}

相关文章

  • leetcode0-HASH搜索

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被...

  • 搜索+搜索+搜索

    鲜活的一天,从起床那刻开始! <感谢小能熊@陈华伟老师的知识管理课程,仅用于个人笔记学习> 引子 经典的东西值得反...

  • 搜索条搜索

    AppDelegate.m ViewController *theVc = [[ViewController al...

  • GridSearch

    不同搜索空间的比较图: 空间搜索 螺旋搜索 线性搜索 网格搜索 可以看到,在超参的搜索过程汇总,网格搜索和螺旋搜索...

  • 搜索功能 分类搜索

    ``` defindexifparams[:category].blank? @products = Prod...

  • 说“搜索”就搜索

    某天逛网易严选,想买条毛巾,直接在搜索区搜索毛巾 在结果中,下翻了许久,太多种类了,只想买纯棉毛巾,这时想搜索“纯...

  • 搜索最近搜索建议

    前言 本章内容为 Android开发者指南的 Framework Topics/Search/Adding Rec...

  • 排序与搜索:搜索

    搜索 搜索是在一个项目集合中找到一个特定项目的算法过程。搜索通常的答案是真的或假的,因为该项目是否存在。 搜索的几...

  • 【电商运营01】做不好淘宝SEO?怪不得没人买你的好货!

    一、淘宝搜索 1、按买家的搜索行为: (1)关键词搜索(2)类目搜索 2、按搜索框的搜索形式: (1)宝贝搜索(默...

  • 浙江省多媒体设计竞赛——网站类作品

    常用功能介绍 搜索:全文搜索、拼音搜索、各种搜索关键词检错、搜索自动补全(搜索提示)、详细的高级搜索等等【评委两年...

网友评论

      本文标题:leetcode0-HASH搜索

      本文链接:https://www.haomeiwen.com/subject/mappuftx.html