原创 哈希表的查找比紅黑樹更快嗎?

這個主要取決於鍵的類型,因爲哈希表需要考慮hash函數和operate==,而紅黑樹需要考慮operate<。這其中速度取決於hash函數與operate<的計算成本。一般情況下,兩者的成本是相同的,因此哈希表查找會比紅黑樹查找要

原创 快樂數(環路檢測)

問題描述 寫一個算法來判斷一個數是不是”快樂數”。 一個數是不是快樂是這麼定義的:對於一個正整數,每一次將該數替換爲他每個位置上的數字的平方和,然後重複這個過程直到這個數變爲1,或是無限循環但始終變不到1。如果可以變爲1,那麼這

原创 插入排序的變形

題目描述 輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位於數組的前半部分,所有的偶數位於位於數組的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。 思路:如果這裏不考慮空間的複雜度,可以用O(

原创 C++中map,hash_map,unordered_map,unordered_set區別與聯繫

一、hash_map、unordered_map 這兩個的內部結構都是採用哈希表來實現。區別在哪裏?unordered_map在C++11的時候被引入標準庫了,而hash_map沒有,所以建議還是使用unordered_map比較

原创 最小子串覆蓋

問題描述 Given a string S and a string T, find the minimum window in S which will contain all the characters in T in co

原创 海量數據中找出前k大數(topk問題)

前兩天面試3面學長問我的這個問題(想說TEG的3個面試學長都是好和藹,希望能完成最後一面,各方面原因造成我無比想去鵝場的心已經按捺不住了),這個問題還是建立最小堆比較好一些。 先拿10000個數建堆,然後一次添加

原创 買賣股票的最佳時機I、II、III、IV

買賣股票的最佳時機I 假設有一個數組,它的第i個元素是一支給定的股票在第i天的價格。如果你最多隻允許完成一次交易(例如,一次買賣股票),設計一個算法來找出最大利潤。 思路:這個比較簡單,只要遍歷一次就好,同時更新最小的值。可以得

原创 落單的數(落單的數 & 落單的數 II & 落單的數 III)

落單的數 給出2*n + 1 個的數字,除其中一個數字之外其他每個數字均出現兩次,找到這個數字。 樣例 給出 [1,2,2,1,3,4,3],返回 4 挑戰  一次遍歷,常數級的額外空間複雜度 思路1:利用異或的性質(自反性) 自反性:a

原创 蓄水池抽樣算法 & 隨機洗牌算法

蓄水池抽樣算法 蓄水池抽樣算法隨機算法的一種,用來從 N 個樣本中隨機選擇 K 個樣本,其中 N 非常大(以至於 N 個樣本不能同時放入內存)或者 N 是一個未知數。其時間複雜度爲 O(N),包含下列步驟 (假設有一維數組 S,

原创 4個類型轉換相關的關鍵字

分別是 static_cast、const_cast、reinterpret_cast、dynamic_cast static_cast 任何具有明確定義的類型轉換,只要不包含底層const,都可以使用static_cast。在編

原创 亂序字符串

問題描述: 給出一個字符串數組S,找到其中所有的亂序字符串(Anagram)。如果一個字符串是亂序字符串,那麼他存在一個字母集合相同,但順序不同的字符串也在S中。 注意事項 所有的字符串都只包含小寫字母 對於字符串數組 [“li

原创 RALL和智能指針

RAII機制 RAII的本質內容是用對象代表資源,把管理資源的任務轉化爲管理對象的任務,將資源的獲取和釋放與對象的構造和析構對應起來,從而確保在對象的生存期內資源始終有效,對象銷燬時資源一定會被釋放。說白了,就是擁有了對象,就擁有

原创 最長迴文子串

0. 問題定義 最長迴文子串問題:給定一個字符串,求它的最長迴文子串長度。 轉載:https://segmentfault.com/a/1190000003914228 如果一個字符串正着讀和反着讀是一樣的,那它就是迴文串。下

原创 接雨水

問題描述: Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how muc

原创 裝最多水的容器

裝最多水的容器 給定 n 個非負整數 a1, a2, …, an, 每個數代表了座標中的一個點 (i, ai)。畫 n 條垂直線,使得 i 垂直線的兩個端點分別爲(i, ai)和(i, 0)。找到兩條線,使得其與 x 軸共同構成一