leetcode-3的冪(JavaScript)
給定一個整數,寫一個函式來判斷它是否是 3 的冪次方。
示例 1:
輸入: 27
輸出: true
示例 2:
輸入: 0
輸出: false
示例 3:
輸入: 9
輸出: true
示例 4:
輸入: 45
輸出: false
進階:
你能不使用迴圈或者遞迴來完成本題嗎?
思路:
使用迴圈很簡單,一直除以3,最後得到1,就是3的冪。但這道題還有更快的解法。
先把數字轉換成3進位制的字串,如果是3的冪,那麼這個字串一定是一個1,和若干個0.
1: '1'
3: '10'
9: '100'
27: '1000'
所以,只需判斷字串的第一個字元是否為1,後面的字串使用弱相等(==)是否等於false.
/**
* @param {number} n
* @return {boolean}
*/
var isPowerOfThree = function(n) {
let str = n.toString(3);
if (str[0] === '1' && str.slice(1) == false) return true
else return false
};
相關推薦
leetcode-3的冪(JavaScript)
給定一個整數,寫一個函式來判斷它是否是 3 的冪次方。 示例 1: 輸入: 27 輸出: true 示例 2: 輸入: 0 輸出: false 示例 3: 輸入: 9 輸出: true 示例 4: 輸入: 45 輸出: false 進階: 你能不使用迴圈或者遞迴來完成本題嗎?
leetcode-顏色分類(JavaScript)
給定一個包含紅色、白色和藍色,一共 n 個元素的陣列,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色、白色、藍色順序排列。 此題中,我們使用整數 0、 1 和 2 分別表示紅色、白色和藍色。 注意: 不能使用程式碼庫中的排序函式來解決這道題。 示例:
LeetCode-中級-矩陣置零(JavaScript)
給定一個 m x n 的矩陣,如果一個元素為 0,則將其所在行和列的所有元素都設為 0。請使用原地演算法。 示例 1: 輸入: [ [1,1,1], [1,0,1], [1,1,1] ] 輸出: [
LeetCode——盛最多水的容器(JavaScript)
給定 n 個非負整數 a1,a2,...,an,每個數代表座標中的一個點 (i, ai) 。在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 (i, ai) 和 (i, 0)。找出其中
LeetCode——反轉字串中的母音字母(JavaScript)
編寫一個函式,以字串作為輸入,反轉該字串中的母音字母。 示例 1: 輸入: "hello" 輸出: "holle" 示例 2: 輸入: "leetcode" 輸出: "leotcede" 說明: 母音字母不包含字母"y"。 思路: 典型的雙指標——對撞指標解法。設定
LeetCode——對稱二叉樹(JavaScript)
給定一個二叉樹,檢查它是否是映象對稱的。 例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面這個 [1,2,2,null,3,null,3] 則不是映象
leetcode-將有序陣列轉換為二叉搜尋樹(JavaScript)
將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,null,5],它可以
LeetCode——917. 僅僅反轉字母(JavaScript)
給定一個字串 S,返回 “反轉後的” 字串,其中不是字母的字元都保留在原地,而所有字母的位置發生反轉。 示例 1: 輸入:"ab-cd" 輸出:"dc-ba" 示例 2: 輸入:"a-bC-dEf-ghIj" 輸出:"j-Ih-gfE-dCba" 示例 3: 輸入
LeetCode——930. 和相同的二元子陣列(JavaScript)
在由若干 0 和 1 組成的陣列 A 中,有多少個和為 S 的非空子陣列。 示例: 輸入:A = [1,0,1,0,1], S = 2 輸出:4 解釋: 如下面黑體所示,有 4 個滿足題目要求的子陣列: [1,0,1,0,1] [1,0,1,0,1] [1,0,1,0,1] [1,0,
LeetCode—— 939. 最小面積矩形(JavaScript)
給定在 xy 平面上的一組點,確定由這些點組成的矩形的最小面積,其中矩形的邊平行於 x 軸和 y 軸。 如果沒有任何矩形,就返回 0。 示例 1: 輸入:[[1,1],[1,3],[3,1],[3,3],[2,2]] 輸出:4 示例 2: 輸入:[[1,1],
LeetCode——112.路徑總和(JavaScript)
給定一個二叉樹和一個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。 說明: 葉子節點是指沒有子節點的節點。 示例: 給定如下二叉樹,以及目標和 sum = 22, 5 / \
LeetCode——中級演算法——樹和圖——二叉樹的鋸齒形層序遍歷(JavaScript)
給定一個二叉樹,返回其節點值的鋸齒形層次遍歷。(即先從左往右,再從右往左進行下一層遍歷,以此類推,層與層之間交替進行)。 例如: 給定二叉樹 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回鋸
LeetCode: 160.相交連結串列(JavaScript)
編寫一個程式,找到兩個單鏈表相交的起始節點。 例如,下面的兩個連結串列: A: a1 → a2 ↘ c1 → c2 → c3 ↗
leetcode--中級演算法--陣列和字串--遞增的三元子序列(JavaScript)
給定一個未排序的陣列,判斷這個陣列中是否存在長度為 3 的遞增子序列。 數學表示式如下: 如果存在這樣的 i, j, k, 且滿足 0 ≤ i < j < k ≤ n-1, 使得 arr[i] < arr[j] < arr[k] ,返回 true ; 否則返回
leetcode——困難——57.插入區間(JavaScript)
給出一個無重疊的 ,按照區間起始端點排序的區間列表。 在列表中插入一個新的區間,你需要確保列表中的區間仍然有序且不重疊(如果有必要的話,可以合併區間)。 示例 1: 輸入: intervals = [[1,3],[6,9]], newInterval = [2,5] 輸出: [[
LeetCode——89. 格雷編碼(JavaScript)
格雷編碼是一個二進位制數字系統,在該系統中,兩個連續的數值僅有一個位數的差異。 給定一個代表編碼總位數的非負整數 n,列印其格雷編碼序列。格雷編碼序列必須以 0 開頭。 示例 1: 輸入: 2 輸出: [0,1,3,2] 解釋: 00 - 0 01 - 1 11 - 3 10 -
LeetCode——946. 驗證棧序列(JavaScript)
給定 pushed 和 popped 兩個序列,只有當它們可能是在最初空棧上進行的推入 push 和彈出 pop 操作序列的結果時,返回 true;否則,返回 false 。 示例 1: 輸入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1] 輸出
LeetCode——945.使陣列唯一的最小增量(JavaScript)
給定整數陣列 A,每次 move 操作將會選擇任意 A[i],並將其遞增 1。 返回使 A 中的每個值都是唯一的最少操作次數。 示例 1: 輸入:[1,2,2] 輸出:1 解釋:經過一次 move 操作,陣列將變為 [1, 2, 3]。 示例 2: 輸入:[3,2,1,
LeetCode--230.二叉搜尋樹中第K小的元素(JavaScript)
給定一個二叉搜尋樹,編寫一個函式 kthSmallest 來查詢其中第 k 個最小的元素。 說明: 你可以假設 k 總是有效的,1 ≤ k ≤ 二叉搜尋樹元素個數。 示例 1: 輸入: root = [3,1,4,null,2], k = 1 3 / \ 1 4
LeetCode——中級演算法——排序和搜尋——前K個高頻元素(JavaScript)
給定一個非空的整數陣列,返回其中出現頻率前 k 高的元素。 示例 1: 輸入: nums = [1,1,1,2,2,3], k = 2 輸出: [1,2] 示例 2: 輸入: nums = [1], k = 1 輸出: [1] 說明: 你可以假設給定的 k 總是合