領扣網演算法學習筆記 167

2021-09-03 10:36:36 字數 995 閱讀 3807

本系列的演算法題目來自領扣網

給定乙個已按照**公升序排列 **的有序陣列,找到兩個數使得它們相加之和等於目標數。

函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。

示例:

輸入: numbers = [2, 7, 11, 15], target = 9

輸出: [1,2]

解釋: 2 與 7 之和等於目標數 9 。因此 index1 = 1, index2 = 2 。

說明:

返回的下標值(index1 和 index2)不是從零開始的。

你可以假設每個輸入只對應唯一的答案,而且你不可以重複使用相同的元素。

思路一:

先判斷第乙個值加上最後乙個值與目標值的大小,如果小了就將小的值往前移一位,如果大了的話就將最後乙個值往前移一位。這樣的話複雜度就為o(n)。

**如下:

class

solution

else

if(numbers[left]

+numbers[right]

< target)

else

}return value;}}

// 1ms

自我整理:

領扣上面該題其他高質量範例:

class

solution

else

if(temp}else}}

return result;}}

// 用時1ms

自我整理:

​ 沒想到這玩意還能這樣優化,對於我上面的**,

首先可以先計算數值,避免多次判斷時需要計算多次,這樣的話每次迴圈只需要計算一次;

其次如果陣列中存在很多重複的值,我寫的**不會跳過哪些重複的值,還是會計算,所以這裡也可以優化。

感覺有點一葉障目了,要學的東西還有很多啊。。。。

領扣網演算法學習筆記 283

本系列的演算法題目來自領扣網 給定乙個陣列nums,編寫乙個函式將所有0移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。思路一 看到這題的第乙個思路是 檢測到0後,將陣列後面的...

領扣網演算法學習筆記 215

本系列的演算法題目來自領扣網 在未排序的陣列中找到第k個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。示例 輸入 3,2,1,5,6,4 和 k 2 輸出 5 輸入 3,2,3,1,2,4,5,5,6 和 k 4 輸出 4說明 你可以假設 k 總是有效...

演算法 學習筆記

1.輸入輸出演算法至少有乙個或多個輸出 2.有窮性 3.確定性 4.可行性 1.正確性a.演算法程式沒有語法錯誤 b.演算法程式對於合法的輸入資料能夠產生滿足要求的輸出結果 c.演算法程式對於非法的輸入資料能夠得出滿足規格說明的結果 d.演算法對於精心選擇的,甚至刁難的測試資料都有滿足要求的輸出結果...