• LeetCode 1. Two Sum


    原题

    Given an array of integers, return indices of the two numbers such that they add up to a specific target.

    You may assume that each input would have exactly one solution, and you may not use the same element twice.

    Example:

    Given nums = [2, 7, 11, 15], target = 9,
    
    Because nums[0] + nums[1] = 2 + 7 = 9,
    return [0, 1].

    解题思路

    暴力:双循环算法遍历所有情况,时间复杂度为O(n^2),提交后落后99%的人。。。

    class Solution(object):
        def twoSum(self, nums, target):
            """
            :type nums: List[int]
            :type target: int
            :rtype: List[int]
            """
            ret = []
            length = len(nums)
            for i in xrange(length):
                for j in xrange(i):
                    if nums[i] + nums[j] == target:
                        ret.append(j)
                        ret.append(i)
                        return ret
    

      

    优化:空间换时间,将遍历过的数都用字典存下来,一旦碰到跟前面的数相加等于target时则返回,这下时间复杂度只有O(n)啦,提交后领先99%的人。。爽啊~~~

    class Solution(object):
        def twoSum(self, nums, target):
            """
            :type nums: List[int]
            :type target: int
            :rtype: List[int]
            """
            ret = [0]*2
            temp = {}
            length = len(nums)
            for i in xrange(length):
                if (temp.has_key(target - nums[i])):
                    ret[1] = i
                    ret[0] = temp[target - nums[i]]
                    return ret
                temp[nums[i]] = i
    

      

  • 相关阅读:
    [HDU3094]A tree game
    专题总结(博弈论)
    [ZJOI2009]染色游戏
    [AtCoder3954]Painting Machines
    异或
    种树
    [PA2014]Fiolki
    简单题
    2、JUC--CAS算法
    1、JUC--volatile 关键字-内存可见性
  • 原文地址:https://www.cnblogs.com/LiCheng-/p/6774054.html
Copyright © 2020-2023  润新知