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

     

    版本1:O(n^2)  【暴力 原始版本】O(1)

    class Solution(object):
        def twoSum(self, nums, target):
            length = len(nums)
            for i in range(length):
                for j in range(i+1,length)://游标后移
                    if nums[i] + nums[j] == target:
                        return [i,j]
    

      

    版本2:O(n^2)  【暴力 枚举函数增强】O(1
    class Solution(object):
        def twoSum(self, nums, target):
            for index , item in enumerate(nums):
                for past_index , past_item in enumerate(nums[index+1:],index+1):
                    if item + past_item == target:
                        return [index, past_index]
    

      

    版本3:O(n)    【双程hash table】O(n)
    class Solution(object):
        def twoSum(self, nums, target):
            dd = dict()
            for index , value in enumerate(nums):
                dd[value] = index
            for index , value in enumerate(nums):
                tt = target - value
                if dd.has_key(tt) and dd[tt] != index:
                    return [index , dd[tt]]
    

      

    版本4:O(n)    【单程hash table】O(n)
    1. Two Sum.png
    Python
    class Solution(object):
        def twoSum(self, nums, target):
            dd = dict()
            for index , value in enumerate(nums):
                tt = target - value
                if dd.has_key(tt) and dd[tt] != index:
                    return [dd[tt],index]
                else:
                    dd[value] = index
    

      

    Java
    public int[] twoSum(int[] nums, int target) {
            Map<Integer,Integer> map = new HashMap<Integer,Integer>();
            for ( int i=0;i<nums.length;i++ ){
            	if (!map.containsKey(target - nums[i]) ){
            		map.put(nums[i], i );
            	}else{
            		int[] rs = { map.get(target-nums[i]) , i };
            		return rs;
            	}
            }
            return nums;
        }
     
    1.enumerate内置函数的使用(枚举函数)---用于既要遍历索引又要遍历元素;可以接收第二个参数用于指定索引起始值。
  • 相关阅读:
    HDU 4709 3-idiots FFT 多项式
    多项式的黑科技
    JZYZOJ 2043 多项式除法和取余 NTT 多项式
    JZYZOJ 2042 多项式逆元 NTT 多项式
    网络爬虫(4)--正则表达式
    网络爬虫(3)--Beautiful页面解析
    网络爬虫(2)--异常处理
    网络爬虫(1)--准备工作
    PCL库配置出现的问题(WIN10+VS2013)
    QT笔记(1)--QT编程环境搭建
  • 原文地址:https://www.cnblogs.com/flyfatty/p/6624787.html
Copyright © 2020-2023  润新知