原创 C/C++define宏定義的坑

#define POW(X) X*X cout << POW(5) //輸出25 cout << POW(2 + 3) //輸出11 因爲編譯器處理成了2 + 2*3 + 3 //正確宏定義方式 #define POW(X)

原创 JAVA實現KMP

class KMP { //計算next數組 private static int[] getNextArray(String str) { if (str.length() == 1) {

原创 加油站(LeetCode134)---C++實現

思路: 1.首先介紹一個定理,如果一個整數序列累加和非負,那麼一定可以找到一個起點,以該起點開始的序列累加和都非負。 2.由1知,只要gas累加和>=cost累加和 解一定存在,反之,一定無解 3.進行一次遍歷,totalGa

原创 至少有K個重複字符的最長子串(LeetCode395)---C++實現

思路: 最差的方法是雙重循環,時間複雜度O(n^2),所有一定可以優化爲O(nlgn)。聯想到快排、歸併排序,都是分治的思路,這裏也是利用分治,關鍵是找到分治的區分點。 遍歷字符串,找到出現次數少於k次的字符,位置記爲i,分爲(

原创 實現一個容器,在O(1)的時間複雜度下實現插入、刪除、取隨機數(LeetCode380)---C++實現

思路: 利用hashMap和vector,hashMap中保存key和key對應在vector中的索引,刪除時vector只需要調用resize函數即可刪除尾端元素(前提是將需要刪除的元素和尾部元素交換)。 class R

原创 棧的合法輸出順序---C++實現

利用輔助棧,先初始化輔助棧,將輸出序列壓入棧中,輸入序列依次入棧,如果入棧的頂部元素和出棧一致,則入棧和出棧都彈出元素。 bool isLegal(const string& str1, const string& str2)

原创 單鏈錶快排(momenta一面題) ---C++面試

下午面了momenta,單鏈錶快排沒答出來,是自己能力不夠,正好可以查漏。 思路:利用節點值域的交換,主要思想還是partiiton,將鏈表分隔成左右兩部分,按照頭結點的data(即爲tag),左邊的data都小於tag,右邊的

原创 判斷數組中是否存在遞增的三元子序列(LeetCode334)---C++實現

思路:記錄兩個值,一個small,一個big。遍歷數組,如果小於small,則更新small,不然如果小於big,則更新big,如果大於big,則存在遞增三元子序列 bool increasingTriplet(vector

原创 求一個數在二進制中1的個數and判斷一個數是否是2的冪

5 二進制爲101 返回2 -1二進制全爲1(負數採用補碼錶示) 返回32 這裏利用和判斷一個數是否是2的冪的方法一致,利用n&(n-1)每次會去除掉最低位的1 求二進制中1的個數 int getNumOfOne(int

原创 anaconda極速安裝tensorflow ---一條命令 沒有花裏胡哨的技巧

pip install tensorflow -i https://pypi.douban.com/simple 等待系統安裝 顯示successfully時輸入 conda list

原创 子序列組合拳 => 最長連續子序列(leetcode128)&最長遞增子序列長度(leetcode300)&最長遞增子序列個數(leetcode673)---C++實現

最長連續子序列 思路 1.空間換時間,利用哈希表存儲原始數據。 2.遍歷原始數組,例如遍歷到nums[i],在哈希表中先往num[i]右邊找,即num[i] + 1方向;再往左邊找,即nums[i] - 1方向。 3.優化,每

原创 雙指針的巧妙運用=>接雨水(LeetCode42)---C++實現

注意:此題不是求最大陰影面積 思路: 1.所接的雨水的多少應該和較小一端有關係(木桶原理),首先兩個指針分別指向頭尾,小的一方先走 2.同時記錄左右兩邊最大值,如果此時的值比最大值還大,則更新最大值,否則可以接雨水。 int

原创 合併兩個有序鏈表(三種方法)---C++實現

方法一:若要求不能對原始鏈表更改,則必須使用額外空間 //使用額外空間來合併鏈表 不對原始鏈表做改變 node* mergeTwoLinkListWithExtraPlace(node *head1, node *head2)

原创 C++整數int和字符串string互相轉化

一、int轉string 調用to_string()方法即可,參數是int,返回值是string //int轉string void IntToString(int n) { string str = to_string(n

原创 import tensorflow 顯示 No module named 'numpy.core._multiarray_umath'

原因是numpy庫的版本和tensorflow的版本不兼容 打開 Anaconda Promt輸入 pip install --user --upgrade numpy #將numpy更新到最新版本 等待更新成功即可