原创 leetcode:石子游戲

題目來源:力扣 題目介紹: 亞歷克斯和李用幾堆石子在做遊戲。偶數堆石子排成一行,每堆都有正整數顆石子 piles[i] 。 遊戲以誰手中的石子最多來決出勝負。石子的總數是奇數,所以沒有平局。 亞歷克斯和李輪流進行,亞歷克斯先開始

原创 leetcode:按摩師

題目來源:力扣 題目介紹: 一個有名的按摩師會收到源源不斷的預約請求,每個預約都可以選擇接或不接。在每次預約服務之間要有休息時間,因此她不能接受相鄰的預約。給定一個預約請求序列,替按摩師找到最優的預約集合(總預約時間最長),返回

原创 leetcode:詞典中最長的單詞

題目來源:力扣 題目描述: 給出一個字符串數組words組成的一本英語詞典。從中找出最長的一個單詞,該單詞是由words詞典中其他單詞逐步添加一個字母組成。若其中有多個可行的答案,則返回答案中字典序最小的單詞。 若無答案,則返回

原创 leetcode:石子游戲II

題目來源:力扣 題目介紹: 亞歷克斯和李繼續他們的石子游戲。許多堆石子 排成一行,每堆都有正整數顆石子 piles[i]。遊戲以誰手中的石子最多來決出勝負。 亞歷克斯和李輪流進行,亞歷克斯先開始。最初,M = 1。 在每個玩家的

原创 leetcode:距離相等的條形碼

題目來源:力扣 題目描述: 在一個倉庫裏,有一排條形碼,其中第 i 個條形碼爲 barcodes[i]。 請你重新排列這些條形碼,使其中兩個相鄰的條形碼 不能 相等。 你可以返回任何滿足該要求的答案,此題保證存在答案。 ====

原创 leetcode:等差數列劃分

題目來源:力扣 題目介紹 如果一個數列至少有三個元素,並且任意兩個相鄰元素之差相同,則稱該數列爲等差數列。 ======================================================== 示例:

原创 leetcode: 連續子數組的最大和

題目來源:力扣 題目描述: 輸入一個整型數組,數組裏有正數也有負數。數組中的一個或連續多個整數組成一個子數組。求所有子數組的和的最大值。 要求時間複雜度爲O(n)。 ===============================

原创 leetcode: 鍵值映射

題目來源:力扣 題目描述: 實現一個 MapSum 類裏的兩個方法,insert 和 sum。 對於方法 insert,你將得到一對(字符串,整數)的鍵值對。字符串表示鍵,整數表示值。如果鍵已經存在,那麼原來的鍵值對將被替代成新

原创 leetcode:二進制中1的個數

題目來源:力扣 題目描述: 請實現一個函數,輸入一個整數,輸出該數二進制表示中 1 的個數。例如,把 9 表示成二進制是 1001,有 2 位是 1。因此,如果輸入 9,則該函數輸出 2。 ===================

原创 並查集算法union-find

並查集算法: 並查集算法(union-find)是一種用於快速判斷兩節點是否連通的算法. 1.連通性: 並查集算法中所處理的連通性具有如下性質: 自反性:節點p與其自身是連通的 對稱性:如果p與q是連通的,則q與p也是連通的.

原创 leetcode:實現 Trie (前綴樹)

題目來源:力扣 題目描述: 實現一個 Trie (前綴樹),包含 insert, search, 和 startsWith 這三個操作。 =============================================

原创 leetcode: 最低票價

題目來源:力扣 題目介紹: 在一個火車旅行很受歡迎的國度,你提前一年計劃了一些火車旅行。在接下來的一年裏,你要旅行的日子將以一個名爲 days 的數組給出。每一項是一個從 1 到 365 的整數。 火車票有三種不同的銷售方式:

原创 leetcode:剪繩子

題目來源:力扣 題目介紹 給你一根長度爲 n 的繩子,請把繩子剪成整數長度的 m 段(m、n都是整數,n>1並且m>1),每段繩子的長度記爲 k[0],k[1]…k[m] 。請問 k[0]k[1]…*k[m] 可能的最大乘積是多

原创 leetcode:最小的k個數

題目來源:力扣 題目描述: 輸入整數數組 arr ,找出其中最小的 k 個數。例如,輸入4、5、1、6、2、7、3、8這8個數字,則最小的4個數字是1、2、3、4。 審題: 對於TopM問題,當數據量較小時,可以直接對數據進行

原创 leetcode:距離原點最近的K個點

題目來源:力扣 題目描述: 我們有一個由平面上的點組成的列表 points。需要從中找出 K 個距離原點 (0, 0) 最近的點。 (這裏,平面上兩點之間的距離是歐幾里德距離。) 你可以按任何順序返回答案。除了點座標的順序之外,