OJ: Two Sum
来源:互联网 发布:淘宝的海外直购在哪 编辑:程序博客网 时间:2024/06/10 17:22
题意
题意就是给出一数字列表,找出两个数,使俩数和等于给定的一个整数,求出这俩数的下标。
比如:
Input: numbers={2, 7, 11, 15}, target=9·
Output: index1=1, index2=2
思路
解题的时候,用的是 HashTable
思路很简单,就是首先将数组中所有的数插入到哈希表内,然后再在哈希表内查找即可。PS:数据量比较大,
代码
首先是 HashTable
的代码
MAX = 200003hashTable =[0 for i in range(MAX)]mark =[0 for i in range(MAX)]def ToHash(p): if p<0: return (p%MAX+MAX)%MAX return p%MAXdef insert(p): k = ToHash(p) while mark[k] and hashTable[k]!=p: k +=1 if k>=MAX: k -= MAX hashTable[k]=p mark[k]+=1def find(p): k = ToHash(p) while mark[k] and hashTable[k]!=p: k+=1 if k>=MAX: k-= MAX return mark[k]flag=0nums =[0,4,3,0]target=0for i in nums: insert(i)for i in nums: if find(target-i): if i*2==target: if mark[i]<2: continue else: flag =1 break breakprint mark[i]print [nums.index(i)+1,nums.index(target-i)+1] if flag==0 else [nums.index(i)+1,len(nums)-nums[::-1].index(i)]
简洁的使用字典: 有点dp的感觉
m = {}nums=[0,3,4,0]target=0for i,num in enumerate(nums): if target - num in m: print [m[target - num],i + 1] m[num] = i + 1
0 0
- LeetCode OJ:Two Sum
- LeetCode OJ : two sum
- [OJ]: Two Sum
- LeetCode OJ -Two Sum
- LeetCode OJ Two Sum
- [LeetCode OJ] Two Sum
- OJ: Two Sum
- Two Sum LeetCode OJ
- LeetCode OJ - Two Sum
- LeetCode OJ ----Two Sum
- LeetCode OJ--Two Sum
- Two Sum (LeetCode OJ)
- LeetCode OJ:Two sum
- [LeetCode OJ][001]Two Sum
- 【LeetCode OJ 001】Two Sum
- LeetCode OJ 1Two Sum
- LeetCode OJ 01 Two Sum
- LeetCode OJ : 1 Two Sum
- Contest 5 1007 MZL's simple problem
- MongoDB 索引建立机制
- hdu1394
- 解决WebService中调用dll读取不到ini文件的问题
- 如何用openpyxl操作excel文档
- OJ: Two Sum
- 解决sqoop导入关系库更新联合主键的问题
- js继承例子
- iOS开发核心语言 Objective C —— 语言简介及特性
- Java内存结构模型
- git的repository如果太大的话怎么clone
- C++(3)标准库类型
- 系统情景源代码笔记_binder机制
- hdoj-1134-Game of Connections【卡特兰数】