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练习自己的解题思路还有时间算法处理能力,加油。

  • 相关阅读:
    Flink1.9重大改进和新功能
    【2020】DBus,一个更能满足企业需求的大数据采集平台
    大数据运维:大数据平台+海量数据
    大数据运维尖刀班 | 集群_监控_CDH_Docker_K8S_两项目_腾讯云服务器
    离线数仓和实时数仓架构与设计
    【全集】IDEA入门到实战
    Mysql快速入门
    RabbitMQ安装
    消息队列MQ简介
    C#特性
  • 原文地址:https://www.cnblogs.com/xiaoqiangink/p/12841084.html
Copyright © 2011-2022 走看看