原题地址: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相关推荐

  1. LeetCode刷题Python实录

    使用Python的LeetCode刷题 前言 题目 1408. 数组中的字符串匹配 508. 出现次数最多的子树元素和 1089. 复写零 剑指 Offer 14- I. 剪绳子 1175. 质数排列 ...

  2. 【同113】LeetCode 129. Sum Root to Leaf Numbers

    LeetCode 129. Sum Root to Leaf Numbers Solution1:我的答案 二叉树路径和问题,类似113 /*** Definition for a binary tr ...

  3. leetcode two sum python_LeetCode专题-Python实现之第1题:Two Sum

    相关代码已经上传到github:https://github.com/exploitht/leetcode-python 文中代码为了不动官网提供的初始几行代码内容,有一些不规范的地方,比如函数名大小 ...

  4. 【Leetcode刷题Python】494. 目标和

    1 题目 给你一个整数数组 nums 和一个整数 target . 向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums = [2, 1] ,可 ...

  5. LeetCode中,python一行代码能干啥?

    导读 都说python语言简洁.集成高效,一行代码往往能实现很多复杂的操作,比如两变量交换.心形输出.打印乘法口诀等等.但这些总归还是不太实用.那么我们换做在LeetCode中,看看用python一行 ...

  6. 【代码】LeetCode刷题Python版

    python版LeetCode 算法部分 811. 子域名访问计数 class Solution:def subdomainVisits(self, cpdomains):""&q ...

  7. [LeetCode]题解(python):150-Evaluate Reverse Polish Notation

    题目来源: https://leetcode.com/problems/evaluate-reverse-polish-notation/ 题意分析: 给定一个数组,用这个数组来表示加减乘除,例如 [ ...

  8. [LeetCode]题解(python):108-Convert Sorted Array to Binary Search Tree

    题目来源: https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ 题意分析: 给出一个排好序的数组,根据这 ...

  9. [LeetCode]题解(python):019-Remove Nth Node From End of List

    题目来源: https://leetcode.com/problems/remove-nth-node-from-end-of-list/ 题意分析: 这道题是给定一个链表,删除倒数第n个节点.提醒, ...

  10. [LeetCode]题解(python):153-Find Minimum in Rotated Sorted Array

    题目来源: https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/ 题意分析: 在一个不重复的翻转的数组里面找到最小那个 ...

最新文章

  1. 在oracle中怎么判断一个日期是否在一定时间范围内
  2. 使用注解打造自己的IOC框架
  3. 决定局域网的主要技术要素
  4. hibernate插入数据测试无异常,但数据库没有数据
  5. 前端生产方式:过去 10 年回顾和未来 10 年展望
  6. 操作系统与数据库知识点
  7. 详谈如何定制自己的博客园皮肤【转】
  8. 数组concat_js 标准二维数组变一维数组的方法
  9. 2019年网络安全状况_知道吗,如何加强个人的网络安全状况?
  10. ios打包ipa的四种实用方法(.app转.ipa)
  11. php错误日志和php-frm错误日志,错误amp;日志
  12. C/C++ 取整函数
  13. mysql数据库详细设计实例_MYSQL数据库设计和数据库设计实例(二)
  14. 动态链接库(DLL)开发基础
  15. 【工具类】使用ffmpeg下载视频
  16. 小企业怎样选择服务器和操作系统
  17. Biotin-PEG-CHO,生物素PEG醛基
  18. 地下管孔资源紧张,气吹微缆不香吗?
  19. 如是古籍数字化工具平台介绍---自动秒级识别古籍OCR
  20. module.exports 和 exports的区别

热门文章

  1. [Surface] 在win8.1上使用QQ截图放大问题(解决办法)
  2. Redis(RedisTemplate)使用string字符串
  3. C#自定义RSA加密解密及RSA签名和验证封装类
  4. c#关于try catch finally的使用,判断日期格式是否正确
  5. ios换肤思想,及工具类
  6. POJ2492A Bug's Life【并查集+根节点偏移】
  7. [转]Banner设计“点横竖撇捺”
  8. Dennis Ritchie, father of Unix and C, dies
  9. 测试与开发的冲突举例
  10. .NET程序不需要受SVN版本控制的文件类型