看板 Python 關於我們 聯絡資訊
題目 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沒辦法接受時間複雜度太高 的答案嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 117.19.168.127 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1584524596.A.25A.html
yushes920179: 純回答你問題 是 03/18 18:32
cuteSquirrel: 對,Time Complexity太高。 03/18 19:12
cuteSquirrel: 提示:O(n)演算法、利用以排序的性質、double index 03/18 19:15
cuteSquirrel: 已排序 03/18 19:15
jn8029: 討論區有O(n)的解法啊 03/19 09:57
cuteSquirrel: 對,討論區upvote按讚數高的解法,很值得一讀。 03/19 13:35