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)

  1. classSolution(object):
  2. def twoSum(self, nums, target):
  3. length = len(nums)
  4. for i in range(length):
  5. for j in range(i+1,length)://游标后移
  6. if nums[i]+ nums[j]== target:
  7. return[i,j]

版本2:O(n^2)  【暴力 枚举函数增强】O(1)

  1. classSolution(object):
  2. def twoSum(self, nums, target):
  3. for index , item in enumerate(nums):
  4. for past_index , past_item in enumerate(nums[index+1:],index+1):
  5. if item + past_item == target:
  6. return[index, past_index]

版本3:O(n)    【双程hash table】O(n)

  1. classSolution(object):
  2. def twoSum(self, nums, target):
  3. dd = dict()
  4. for index , value in enumerate(nums):
  5. dd[value]= index
  6. for index , value in enumerate(nums):
  7. tt = target - value
  8. if dd.has_key(tt)and dd[tt]!= index:
  9. return[index , dd[tt]]

版本4:O(n)    【单程hash table】O(n)

Python

  1. classSolution(object):
  2. def twoSum(self, nums, target):
  3. dd = dict()
  4. for index , value in enumerate(nums):
  5. tt = target - value
  6. if dd.has_key(tt)and dd[tt]!= index:
  7. return[dd[tt],index]
  8. else:
  9. dd[value]= index

Java

  1. public int[] twoSum(int[] nums, int target){
  2. Map<Integer,Integer> map = new HashMap<Integer,Integer>();
  3. for( int i=0;i<nums.length;i++){
  4. if(!map.containsKey(target - nums[i])){
  5. map.put(nums[i], i );
  6. }else{
  7. int[] rs ={ map.get(target-nums[i]), i };
  8. return rs;
  9. }
  10. }
  11. return nums;
  12. }

1.enumerate内置函数的使用(枚举函数)---用于既要遍历索引又要遍历元素;可以接收第二个参数用于指定索引起始值。

时间: 2024-10-27 04:59:28

1. Two Sum【数组|哈希表】的相关文章

[LeetCode] #1# Two Sum : 数组/哈希表/二分查找

一. 题目 1. Two SumTotal Accepted: 241484 Total Submissions: 1005339 Difficulty: Easy 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 solutio

perl5 第九章 关联数组/哈希表

第九章 关联数组/哈希表 by flamephoenix 一.数组变量的限制二.定义三.访问关联数组的元素四.增加元素五.创建关联数组六.从数组变量复制到关联数组七.元素的增删八.列出数组的索引和值九.用关联数组循环十.用关联数组创建数据结构  1.(单)链表  2.结构  3.树 一.数组变量的限制    在前面讲的数组变量中,可以通过下标访问其中的元素.例如,下列语句访问数组@array的第三个元素:    $scalar = $array[2];    虽然数组很有用,但它们有一个显著缺陷

哈希表--扩展数组

pre-situation: 当哈希表变得太满时候.一个选择是扩展数组. java中数组有固定大小.而且不能扩展.编程时.只能另外创建一个更新的更大的数组.然后把旧数组的所有内容插入 新数组当中. 注意: 哈希函数根据数组大小计算给定数据项的位置. 所以这些数据项不能再放在新数组中和原有数组相同的位置上. 因此不能简单地从一个数组向另一个数组拷贝数据. 扩展后的数组容量通常是原来的两倍.实际上.因为数组容量应该是一个质数. 所以新数组要比两倍的容量多一点.

4.PowerShell -- 数组,哈希表

1. PowerShell数组 声明数组 [email protected]("user1","user2","user3") 查看数组 $strUsers PS C:\Users\Administrator> $strUsers[0] user1 赋值 $strUsers[1]="marui" 重新查看数组元素 PS C:\Users\Administrator> $strUsers user1 marui us

Exchange 2013 PowerShell数组和哈希表

示例: 你可以使用一个变量来存放一个数组,通过这个数组对变量分配多个值,在值之间,值需要用分隔号隔开,下面来创建一个示例: $servers = "EX1","EX2","EX3" 创建一个空的哈希表,可以使用如下语法: $hashtable = @{} 创建完哈希表后,我们可以对它进行赋值: $hashtable["server1"] = 1 $hashtable["server2"] = 2 $hash

用哈希表去数组重复项,有详细注释

这个我不懂,男朋友给我讲了一遍,我还是不太明白,于是自己带入实例一个一个理了一遍,写上了很详细的注释,如果有人能看到,并且和我一样不太理解,希望看到这个就都能懂哈,哎学习中的菜鸟伤不起~ var countArr = [1, 2, 1]; function unique(arr) { var resultArr = [], hash = {}; //定义返回的数组,和哈希表 for (var i = 0, elem; (elem = arr[i]) != null; i++) { //for循环

哈希表数组去重

方式1:使用shift()获取并删除删除数组的第一个元素,判断这个元素是否还存在于数组中,如果存在则说明这个元素的是重复的:如果不存在,进行push()操作 function unique(a){ if(Array.isArray(a)){ var len = a.length,item; while(len--){ item = a.shift(); if(a.indexOf(item) === -1){ a.push(item); } } } return a; } 方式2:建立一个哈希表,

Java 哈希表运用-LeetCode 1 Two Sum

Given an array of integers, find two numbers such that they add up to a specific target number. The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that

58. C# -- 集合(动态数组,哈希表,排序列表,堆栈,队列,点阵列)

一.先来说说数组的不足(也可以说集合与数组的区别): 1.数组是固定大小的,不能伸缩.虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化.随后以前的数组就废弃!而集合却是可变长的 2.数组要声明元素的类型,集合类的元素类型却是object. 3.数组可读可写不能声明只读数组.集合类可以提供ReadOnly方法以只读方式使用集合. 4.数组要有整数下标才能访问特定的元素,然而很多时候这样的下标并不是很有用.集合也是