LeetCode top100 旋轉陣列

2021-10-06 08:54:37 字數 1347 閱讀 8467

給定乙個陣列,將陣列中的元素向右移動 k 個位置,其中 k 是非負數

題目分析

輸入: [1,2,3,4,5,6,7] 和 k = 3

輸出: [5,6,7,1,2,3,4]

解釋:向右旋轉 1 步: [7,1,2,3,4,5,6]

向右旋轉 2 步: [6,7,1,2,3,4,5]

向右旋轉 3 步: [5,6,7,1,2,3,4]

思路(一)

擴充套件運算子是三個點(…),將陣列轉為用逗號分隔的引數序列

console.log(…[1,2,3])

//1 2 3

/** 

* @param nums

* @param k

* @return do not return anything, modify nums in-place instead.

*/var

rotate

=function

(nums, k)

;

思路(二)

執行k次,每次都取出最後一項,並在陣列前端新增項

pop():從陣列末尾移除最後一項,並返回陣列最後一項

shift():移除陣列的第一項並返回該項

unshift():在陣列前端新增任意個項

/** 

* @param nums

* @param k

* @return do not return anything, modify nums in-place instead.

*/var

rotate

=function

(nums, k)

return result;

};

思路(三)

考慮旋轉次數 k 比nums,length大以及 k>=nums.length的倍數兩種特殊情況,首先 k=k%nums.length 取餘,歷經兩次反轉

第一次整體反轉

第二次 反轉點處 前後同時反轉

反轉為前後交換元素,用中心收縮法

/** 

* @param nums

* @param k

* @return do not return anything, modify nums in-place instead.

*/var

rotate

=function

(nums, k)

else

function

myreverse

(start,end)}}

;

LeetCode top100 每日溫度

請根據每日 氣溫 列表,重新生成乙個列表。對應位置的輸出為 要想觀測到更高的氣溫,至少需要等待的天數。如果氣溫在這之後都不會公升高,請在該位置用 0 來代替。例如,給定乙個列表 temperatures 73,74,75,71,69,72,76,73 你的輸出應該是 1,1,4,2,1,1,0,0 ...

LeetCode top100 顏色分類

給定乙個包含紅色 白色和藍色,一共 n 個元素的陣列,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色 白色 藍色順序排列。此題中,我們使用整數 0 1 和 2 分別表示紅色 白色和藍色。注意 不能使用 庫中的排序函式來解決這道題 題目分析 輸入 2,0,2,1,1,0 輸出 0,0,1,1,...

LeetCode top100 有效的括號

給定乙個只包括 的字串,判斷字串是否有效。題目分析 有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。輸入 輸出 true 輸入 輸出 true 輸入 輸出 false 思路 一 使用棧的方法,後進先出,如果遇見左括號入棧,右括號出戰,最終判...