leetcode刷題記錄 23 中等

2021-10-25 18:04:39 字數 2099 閱讀 9836

題目:

編寫一段程式來查詢第n個超級醜數。

超級醜數是指其所有質因數都是長度為k的質數列表primes中的正整數。

思路:用乙個陣列記錄每乙個醜數,取下標

時間複雜度:o(mn),空間複雜度o(m+n),m是質因數陣列的長度

/**

* @param n

* @param primes

* @return

*/var nthsuperuglynumber = function(n, primes) s

* @return

*/var removeduplicateletters = function(s)

res.push(s[i]);

}} return res.join("");

};

題目:

給定乙個字串陣列 words,找到 length(word[i]) * length(word[j]) 的最大值,並且這兩個單詞不含有公共字母。你可以認為每個單詞只包含小寫字母。如果不存在這樣的兩個單詞,返回 0。

思路:首先,對陣列排序,長度大的放前面。這樣可以利用貪心策略減小計算的次數

然後,對每乙個字元用set獲取簡化之後的字母,並排序,記錄每一種組合對應的最大長度,遇到同一種組合時只取長度最大的字串,這樣就能跳過很多輪計算

時間複雜度:o(n2),空間複雜度o(n)

/**

* @param words

* @return

*/const fn = (s) => ;

var maxproduct = function (words)

} for (let i = 0; i < l - 1; i++) $`).size ==

list[i].length + list[j].length) }

} return count;

};

題目:

初始時有 n 個燈泡關閉。 第 1 輪,你開啟所有的燈泡。 第 2 輪,每兩個燈泡你關閉一次。 第 3 輪,每三個燈泡切換一次開關(如果關閉則開啟,如果開啟則關閉)。第 i 輪,每 i 個燈泡切換一次開關。 對於第 n 輪,你只切換最後乙個燈泡的開關。 找出 n 輪後有多少個亮著的燈泡。

思路:這題其實是計算因數的數量。如果某個數有奇數個因數,那麼最後它是亮的。那麼,什麼數的因數是奇數個呢?完全平方數

/**

* @param n

* @return

*/var bulbswitch = function(n)

return v;

};

題目:

給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 -1。

你可以認為每種硬幣的數量是無限的。

思路:經典的動態規劃,和揹包問題很像。

用乙個陣列,對於金額為i時的情況:res[i]為此時的最小硬幣個數。

所以,對於面值為n的硬幣,res[i]=res[i-n]+1.並且要列舉所有的硬幣的可能(注意i-n不能小於0)

/**

* @param coins

* @param amount

* @return

*/var coinchange = function(coins, amount) else

} function getc(i)

return res[amount] == infinity ? -1 : res[amount];

};

/**

* @param coins

* @param amount

* @return

*/var coinchange = function(coins, amount)

} return res[amount] == infinity ? -1 : res[amount];

};

刷題記錄23

老師在開學第一天就把所有作業都布置了,每個作業如果在規定的時間內交上來的話才有學分。每個作業的截止日期和學分可能是不同的。例如如果乙個作業學分為 10,要求在 6 天內交,那麼要想拿到這 10 學分,就必須在第 6 天結束前交。每個作業的完成時間都是只有一天。例如,假設有 7 次作業的學分和完成時間...

leetcode刷題記錄

我覺得每天來兩道,練習練習,再看看人家是怎麼優化的。1.給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。c 暴力求解,204ms,9.1m class solution for index,num in enumerate ...

LeetCode刷題記錄

動態規劃和貪心演算法的異同點 class solution throw newruntimeexception 時間複雜度 o n 2 對於每個元素,我們試圖通過遍歷陣列的其餘部分來尋找它所對應的目標元素,這將耗費 o n o n 的時間。因此時間複雜度為 o n 2 需要一種方法,尋找符合要求的元...