[leetcode]Two Sum @ Python
原题地址:http://oj.leetcode.com/problems/two-sum/
题意:找出数组numbers中的两个数,它们的和为给定的一个数target,并返回这两个数的索引,注意这里的索引不是数组下标,而是数组下标加1。比如numbers={2,7,11,17}; target=9。那么返回一个元组(1,2)。这道题不需要去重,对于每一个target输入,只有一组解,索引要按照大小顺序排列。
解题思路:1,由于要找到符合题意的数组元素的下标,所以先要将原来的数组深拷贝一份,然后排序。
2,然后在排序后的数组中找两个数使它们相加为target。这个思路比较明显:使用两个指针,一个指向头,一个指向尾,两个指针向中间移动并检查两个指针指向的数的和是否为target。如果找到了这两个数,再将这两个数在原数组中的位置找出来就可以了。
3,要注意的一点是:在原来数组中找下标时,需要一个从头找,一个从尾找,要不无法通过。如这个例子:numbers=[0,1,2,0]; target=0。如果都从头开始找,就会有问题。
代码:
class Solution:# @return a tuple, (index1, index2)def twoSum(self, num, target):index = []numtosort = num[:]; numtosort.sort()i = 0; j = len(numtosort) - 1while i < j:if numtosort[i] + numtosort[j] == target:for k in range(0,len(num)):if num[k] == numtosort[i]:index.append(k)breakfor k in range(len(num)-1,-1,-1):if num[k] == numtosort[j]:index.append(k)breakindex.sort()breakelif numtosort[i] + numtosort[j] < target:i = i + 1elif numtosort[i] + numtosort[j] > target:j = j - 1return (index[0]+1,index[1]+1)
以上代码太冗长了,如果使用dict也就是哈希,就会简洁很多。
class Solution:# @return a tuple, (index1, index2)def twoSum(self, num, target):dict = {}for i in xrange(len(num)):x = num[i]if target-x in dict:return (dict[target-x]+1, i+1)dict[x] = i
[leetcode]Two Sum @ Python相关推荐
- LeetCode刷题Python实录
使用Python的LeetCode刷题 前言 题目 1408. 数组中的字符串匹配 508. 出现次数最多的子树元素和 1089. 复写零 剑指 Offer 14- I. 剪绳子 1175. 质数排列 ...
- 【同113】LeetCode 129. Sum Root to Leaf Numbers
LeetCode 129. Sum Root to Leaf Numbers Solution1:我的答案 二叉树路径和问题,类似113 /*** Definition for a binary tr ...
- leetcode two sum python_LeetCode专题-Python实现之第1题:Two Sum
相关代码已经上传到github:https://github.com/exploitht/leetcode-python 文中代码为了不动官网提供的初始几行代码内容,有一些不规范的地方,比如函数名大小 ...
- 【Leetcode刷题Python】494. 目标和
1 题目 给你一个整数数组 nums 和一个整数 target . 向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums = [2, 1] ,可 ...
- LeetCode中,python一行代码能干啥?
导读 都说python语言简洁.集成高效,一行代码往往能实现很多复杂的操作,比如两变量交换.心形输出.打印乘法口诀等等.但这些总归还是不太实用.那么我们换做在LeetCode中,看看用python一行 ...
- 【代码】LeetCode刷题Python版
python版LeetCode 算法部分 811. 子域名访问计数 class Solution:def subdomainVisits(self, cpdomains):""&q ...
- [LeetCode]题解(python):150-Evaluate Reverse Polish Notation
题目来源: https://leetcode.com/problems/evaluate-reverse-polish-notation/ 题意分析: 给定一个数组,用这个数组来表示加减乘除,例如 [ ...
- [LeetCode]题解(python):108-Convert Sorted Array to Binary Search Tree
题目来源: https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ 题意分析: 给出一个排好序的数组,根据这 ...
- [LeetCode]题解(python):019-Remove Nth Node From End of List
题目来源: https://leetcode.com/problems/remove-nth-node-from-end-of-list/ 题意分析: 这道题是给定一个链表,删除倒数第n个节点.提醒, ...
- [LeetCode]题解(python):153-Find Minimum in Rotated Sorted Array
题目来源: https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/ 题意分析: 在一个不重复的翻转的数组里面找到最小那个 ...
最新文章
- 在oracle中怎么判断一个日期是否在一定时间范围内
- 使用注解打造自己的IOC框架
- 决定局域网的主要技术要素
- hibernate插入数据测试无异常,但数据库没有数据
- 前端生产方式:过去 10 年回顾和未来 10 年展望
- 操作系统与数据库知识点
- 详谈如何定制自己的博客园皮肤【转】
- 数组concat_js 标准二维数组变一维数组的方法
- 2019年网络安全状况_知道吗,如何加强个人的网络安全状况?
- ios打包ipa的四种实用方法(.app转.ipa)
- php错误日志和php-frm错误日志,错误amp;日志
- C/C++ 取整函数
- mysql数据库详细设计实例_MYSQL数据库设计和数据库设计实例(二)
- 动态链接库(DLL)开发基础
- 【工具类】使用ffmpeg下载视频
- 小企业怎样选择服务器和操作系统
- Biotin-PEG-CHO,生物素PEG醛基
- 地下管孔资源紧张,气吹微缆不香吗?
- 如是古籍数字化工具平台介绍---自动秒级识别古籍OCR
- module.exports 和 exports的区别
热门文章
- [Surface] 在win8.1上使用QQ截图放大问题(解决办法)
- Redis(RedisTemplate)使用string字符串
- C#自定义RSA加密解密及RSA签名和验证封装类
- c#关于try catch finally的使用,判断日期格式是否正确
- ios换肤思想,及工具类
- POJ2492A Bug's Life【并查集+根节点偏移】
- [转]Banner设计“点横竖撇捺”
- Dennis Ritchie, father of Unix and C, dies
- 测试与开发的冲突举例
- .NET程序不需要受SVN版本控制的文件类型