[問題] leecode167 Time Limit Exceeded

作者: Kuba4ma (哦吼)   2020-03-18 17:43:14
題目
Given an array of integers that is already sorted in ascending order, 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.
Note:
Your returned answers (both index1 and index2) are not zero-based.
You may assume that each input would have exactly one solution and you may
not use the same element twice.
Example:
Input: numbers = [2,7,11,15], target = 9
Output: [1,2]
Explanation: The sum of 2 and 7 is 9. Therefore index1 = 1, index2 = 2.
code:
class Solution(object):
def twoSum(self, numbers, target):
"""
:type numbers: List[int]
:type target: int
:rtype: List[int]
"""
answer=list()
length=len(numbers)
for i in range(length):
for j in range(i+1,length):
if numbers[i]+numbers[j]==target:
answer.append(i+1)
answer.append(j+1)
return answer
問題:
runcode沒問題,但submit會Time Limit Exceeded,是leecode沒辦法接受時間複雜度太高
的答案嗎?
作者: yushes920179 (樂冰)   2020-03-18 18:32:00
純回答你問題 是
作者: cuteSquirrel (松鼠)   2020-03-18 19:12:00
對,Time Complexity太高。提示:O(n)演算法、利用以排序的性質、double index已排序
作者: jn8029 (宅男8029)   2020-03-19 09:57:00
討論區有O(n)的解法啊
作者: cuteSquirrel (松鼠)   2020-03-19 13:35:00
對,討論區upvote按讚數高的解法,很值得一讀。

Links booklink

Contact Us: admin [ a t ] ucptt.com