美文网首页
LeetCode- twoSum-python

LeetCode- twoSum-python

作者: 靳晓阳s | 来源:发表于2017-10-29 22:05 被阅读74次

Description

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].

Solution

时间复杂度:O(n^2)

空间复杂度:O(1)

核心:
第i个元素分别之后的每一个元素(i+1, i+2...., i+n)求和,然后做判断

def twoSum(self, nums, target):
    for i in xrange(len(nums)):
        for j in xrange(i+1, len(nums)):
            if (nums[i] + nums[j] == target):
                return i, j

时间复杂度:O(n^2)

空间复杂度:O(n)

核心:

1. 对数组做排序
2. 较小的元素i(取第一个元素)和元素j(取最后一个元素),求和
3. 如何和等于目标值,返回元素的索引即可;如果和小于目标值,那么将元素i的索引加1;反之,那么将元素j的索引减1。
4. 再求和,进入步骤3。
def twoSum(self, nums, target):
    index = []
    numtosort = nums[:]
    numtosort.sort()
    i = 0; j = len(numtosort) - 1
    while i < j:
        if numtosort[i] + numtosort[j] == target:
            index.append(nums.index(numtosort[i]))
            index.append(len(nums) - nums[::-1].index(numtosort[j]) - 1)
            index.sort()
            break
        elif numtosort[i] + numtosort[j] < target:
            i = i + 1
        elif numtosort[i] + numtosort[j] > target:
            j = j - 1
    return (index[0],index[1])

时间复杂度: O(n)

空间复杂度: O(n)

核心:

1. 取第i个元素,计算目标值减去该元素值
2. 判断是否在字典中,如果在那么取字典中该元素的索引即可
3. 否则将元素索引及值存入字典,进入步骤1
def twoSum(self, nums, target):
        dict = {}
        for i in xrange(len(nums)):
            x = nums[i]
            if target-x in dict:
                return (dict[target-x], i)
            dict[x] = i

--EOF--

相关文章

  • LeetCode- twoSum-python

    Description Given an array of integers, return indices of...

  • 【leetcode-动态规划】Longest Increasin

    【leetcode-动态规划】Longest Increasing Subsequence 给定一个无序的整数数组...

  • LeetCode-股票问题

    LeetCode-股票问题 121. 买卖股票的最佳时机[https://leetcode-cn.com/prob...

  • 算法—字符串编码

    题目: 字符串编码(LeetCode-中等) 编码规则为: k[encoded_string],表示其中方括号内部...

  • 一起学算法-69. x 的平方根

    一、题目 LeetCode-算法入门-69. x 的平方根地址:https://leetcode-cn.com/p...

  • Leetcode-报数

    0.题目 报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。 输入输出报数写作11一个一1121...

  • LeetCode-链表

    LeetCode-链表 链表(Linked List)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺...

  • leetcode-报数

    报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下: 1 被读作 "one 1" ...

  • 【leetcode-动态规划】零钱兑换

    【leetcode-动态规划】零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来...

  • 【leetcode-数组】三数之和

    【leetcode-数组】三数之和 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 ...

网友评论

      本文标题:LeetCode- twoSum-python

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