题目描述:
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
方法一:
思路:将列表nums从小到大排序,首项与末项的和与target比较,当其和比target大时,首项不动,末项指向倒数第二个数;当其和比target小时,首项指向第二个数,末项不动;当其和等于target时,返回首项末项此时的位置(此时找到的位置并不对应原列表中的位置)。递归,找到这两数为止。后在原列表中找到这两个数。
注意:在原列表中查询数时,我所使用的是list.index(),其只找数第一次出现的位置,如果所要找的两个数相等,就会失败。解决方法是利用list.index()可以设置起始查询位置的功能,将第一次出现的位置设为起始位置即可。
上代码:
class Solution:
def com(self,i,j,c,target):
sum=c[i]+c[j]
if sum >target:
j=j-1
if sum<target:
i=i+1