zoukankan      html  css  js  c++  java
  • 【Leetcode 01】两数之和

    leetcode刷题记录01

    题目01 两数之和

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
    你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

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

    分析及解法

    解法1

    首先,可以采用暴力解法,两层循环。先找到num2是否在列表中(需要判断是否重复利用了列表中的元素)
    。如果可以找到,则返回num1 mum2的索引,如果无法找到,则继续循环。
    代码如下:

    class Solution:
        def twoSum(self,nums, target):
            for i in nums:
                j = target - i
                start_index = nums.index(i)
                next_index = start_index + 1
                temp_nums = nums[next_index: ]
                if j in temp_nums:
                    return (nums.index(i),next_index + temp_nums.index(j))
    

    解法二

    解法二可以使用字典,效率要比第一种高出特别多,只需要使用一层循环。

    class Solution:
        def twoSum(self,nums, target):
            dict = {}
            for i in range(len(nums)):
                if target - nums[i] not in dict:
                    dict[nums[i]] = i
                else:
                    return [dict[target-nums[i]],i]
    
  • 相关阅读:
    LeetCode#34 Search for a Range
    Multiplication algorithm
    LeetCode#31 Next Permutation
    Spring boot之Hello World
    spring boot 简介
    分布式-网络通信-线程
    分布式-网络通信-协议
    分布式-架构图
    9.leetcode70-climbing stairs
    8.Leetcode69 Sqrt(x) 笔记
  • 原文地址:https://www.cnblogs.com/zjkstudy/p/12596271.html
Copyright © 2011-2022 走看看