早教吧 育儿知识 作业答案 考试题库 百科 知识分享

Python的leecode问题问题:Givenanarrayofintegers,findtwonumberssuchthattheyadduptoaspecifictargetnumber.ThefunctiontwoSumshouldreturnindicesofthetwonumberssuchthattheyadduptothetarget,whereindex1mustbeless

题目详情
Python 的leecode问题
问题:
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 your returned answers (both index1 and index2) are not zero-based.
You may assume that each input would have exactly one solution.
Input: numbers={2, 7, 11, 15}, target=9
Output: index1=1, index2=2
-----------------------------------------------------------------
我的答案:
class Solution:
def twoSum(self,num,target):
for i in range(len(num)):
for j in range (len(num)):
if num[i] + num[j] == target:
if i return i+1,j+1
else:
return 'null'
可是系统报:Submission Result: Time Limit Exceeded
求大神
▼优质解答
答案和解析
def twosum(array,target):
    newarray=list(enumerate(array))
    newarray.sort(key=lambda x:x[0])
    i=0
    j=len(newarray)-1
    while i<j:
        sumtwo=newarray[i][1]+newarray[j][1]
        if sumtwo>target:
            j-=1
        elif sumtwo<target:
            i+=1
        elif sumtwo==target:
            index1,index2=newarray[i][0]+1,newarray[j][0]+1
            print('index=%d, index2=%d'%(index1,index2))
            return index1,index2

难道真的已经没有题目可以难倒我了?