原创 337打家劫舍3

題目描述 在上次打劫完一條街道之後和一圈房屋後,小偷又發現了一個新的可行竊的地區。這個地區只有一個入口,我們稱之爲“根”。 除了“根”之外,每棟房子有且只有一個“父“房子與之相連。一番偵察之後,聰明的小偷意識到“這個地方的所有房屋

原创 海量數據處理

1. 容量計算 解決海量數據問題前,先對數據的容量進行計算。 1 byte = 8 bit 1 KB = 2^10 byte = 1024 byte ≈ 10^3 byte 1 MB = 2^20 byte ≈ 10^6 byt

原创 消息隊列-RabbitMQ

1. 消息隊列 1.1 優缺點 答:總結爲: 優點: 解耦。系統生產消息後,直接給MQ不用關心其他事務。 異步。異步執行,提高吞吐量。發送者將消息發送給消息隊列後,不需要同步等待接收者處理完畢,而是可以進行其它操作。 削峯。請求

原创 回溯算法問題

基本解法 回溯問題,其實就是一個決策樹遍歷。 要考慮三個問題。 路徑:已做出的選擇。 選擇列表:當前能做的選擇。 結束條件:到達決策樹的葉子節點,不能選擇時。 其實回溯問題可以理解爲動規的暴力解法,而且是沒有重疊子問題的動規。

原创 42接雨水問題

題目描述 給定 n 個非負整數表示每個寬度爲 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。 上面是由數組 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度圖,在這種情況下,可以接 6 個單位的雨水

原创 3無重複字符的最長子串

題目描述 給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。 示例 1: 輸入: “abcabcbb” 輸出: 3 解釋: 因爲無重複字符的最長子串是 “abc”,所以其長度爲 3。 示例 2: 輸入: “bbbb

原创 438找到字符串中所有字母異位詞

題目描述 給定一個字符串 s 和一個非空字符串 p,找到 s 中所有是 p 的字母異位詞的子串,返回這些子串的起始索引。 字符串只包含小寫英文字母,並且字符串 s 和 p 的長度都不超過 20100。 說明: 字母異位詞指字母相

原创 72編輯距離

題目描述 給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少操作數 。 你可以對一個單詞進行如下三種操作: 插入一個字符 刪除一個字符 替換一個字符 示例 1: 輸入: word

原创 去除有序數組/鏈表的重複元素

基本解法 對於數組問題,基本思路都是把元素換到最後,避免在中間刪除元素。 以此可以想出雙指針方法。 fast先走,遇到不重複元素,就讓slow++,並交換元素。fast遍歷結束,nums[0-slow]就是不重複元素,重複元素都

原创 集合中缺失重複各一個元素

基本解法 排序:將元素從小到大排序,索引對應元素不符就是所求元素。具體解法有: Arrays.Sort() 哈希表存儲 映射:將每個索引和元素映射,最後沒有映射或重複映射就是所求。具體解法有: 歸位法,將每個元素都歸

原创 計算質數

基本解法 埃氏篩法。若找到一個質數,則此質數的倍數都不是質數。 降低時間複雜度: 外層遍歷到sqrt(n),因爲sqrt(n)是反轉臨界點,之後的整除因子都是前面的反過來。eg.12=3*4;12=4*3 內層遍歷,直接從

原创 62不同路徑

題目描述 一個機器人位於一個 m x n 網格的左上角 (起始點在下圖中標記爲“Start” )。 機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記爲“Finish”)。 問總共有多少條不同的路徑? 說

原创 287尋找重複數

題目描述 給定一個包含 n + 1 個整數的數組 nums,其數字都在 1 到 n 之間(包括 1 和 n),可知至少存在一個重複的整數。假設只有一個重複的整數,找出這個重複的數。 示例 1: 輸入: [1,3,4,2,2] 輸出

原创 Java基礎-併發編程

1. 進程和線程的區別 答:區別總結如下: 進程是程序的一次執行過程,是系統進行資源調度分配的基本單位; 線程是進程的更小的運行單位,一個進程擁有多個線程,線程間共享地址空間和資源; 線程上下文切換比進程上下文切換要快; 線程一

原创 75顏色分類

題目描述 給定一個包含紅色、白色和藍色,一共 n 個元素的數組,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色、白色、藍色順序排列。 此題中,我們使用整數 0、 1 和 2 分別表示紅色、白色和藍色。 注意: 不能使用代碼