zoukankan      html  css  js  c++  java
  • LeetCode 1. 两数之和

    题目:

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

    你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

    示例:

    给定 nums = [2, 7, 11, 15], target = 9

    因为 nums[0] + nums[1] = 2 + 7 = 9

    所以返回 [0, 1]


    思路:

    方法一:

    有2个情况要考虑,一个是正常的a+b=target,另一个是a+a=target。
    通过target减去list内部数字,判断是否存在作为过滤条件
    1)index数量大于等于2,index相同的元素不能使用2次
    2)为了保证顺序,减数的index要比当前的i值大。
    最后把index就存到新的list里面即可

    class Solution(object):
       def twoSum(self, nums, target):
           list = []
           i = 0
           while i < len(nums):
               while target-nums[i] in nums:
                   if nums.count(target-nums[i])>=2:
                       if len(list) ==2:
                           break
                       else:
                           list.append(i)
                   else:
                       if nums.index(target-nums[i])>i:
                           list.append(i)
                           list.append(nums.index(target-nums[i]))
                   break
               i +=1
           return list
    

    --执行结果
    执行用时 :1232 ms, 在所有 Python 提交中击败了38.06%的用户
    内存消耗 :13.4 MB, 在所有 Python 提交中击败了6.17%的用户

    方法二:

    因为方法一的用时相对有些多,所以参考大牛们的意见采用key value的字典模拟hashmap去筛选过滤。
    字典依次遍历按照value index的方式存入新的dic,当遍历dic找到target - value的值时返回当前dic中保存符合的index和当前的index,即符合题目要求

    class Solution(object):
    def twoSum(self, nums, target):
        dic = {}
        for i, value in enumerate(nums):
            if target - value in dic:
                return [dic[target - value], i] 
            dic[value] = i
    

    执行用时 :36 ms, 在所有 Python 提交中击败了73.27%的用户
    内存消耗 :14.3 MB, 在所有 Python 提交中击败了6.17%的用户

    总结:

    本以为这个题目很简单,没想到花了我不少时间去思考用时问题,第一时间想起来的方式就是通过列表去做这个事情,没想到用dic 更省时间,下决心要好好刷leet code练习自己的解题思路还有时间算法处理能力,加油。

  • 相关阅读:
    Android 数据库SQLite的使用简单Demo
    jQuery插件FullCalendar日程表
    Activiti工作流访问路径资源注册和管理
    电子商务中的数据仓库技术
    打开”我的电脑”慢的解决办法
    数据结构定义中的中(大陆地区)美差异
    Wubi离线安装Ubuntu
    C++如何获得U盘的盘符以及U盘相关属性的代码
    浮动引起的文本重影
    定位相关的怪异问题
  • 原文地址:https://www.cnblogs.com/xiaoqiangink/p/12841084.html
Copyright © 2011-2022 走看看