牛客网《BAT面试算法精品课》学习笔记
目錄
- 牛客網《BAT面試算法精品課》學習筆記
- 牛客網《BAT面試算法精品課》筆記一:排序
- 牛客網《BAT面試算法精品課》筆記二:字符串
- 牛客網《BAT面試算法精品課》筆記三:隊列和棧
- 牛客網《BAT面試算法精品課》筆記四:鏈表
- 牛客網《BAT面試算法精品課》筆記五:二分搜索
- 牛客網《BAT面試算法精品課》筆記六:二叉樹
- 牛客網《BAT面試算法精品課》筆記七:位運算
- 牛客網《BAT面試算法精品課》筆記八:排列組合
- 牛客網《BAT面試算法精品課》筆記九:概率
- 牛客網《BAT面試算法精品課》筆記十:大數據
- 牛客網《BAT面試算法精品課》筆記十一:動態規劃
牛客網《BAT面試算法精品課》學習筆記
牛客網《BAT面試算法精品課》筆記一:排序
排序的詳細實現:博客
微信公眾號
牛客網《BAT面試算法精品課》筆記二:字符串
字符串Case:
Case1.
判斷T2二叉樹是否包含了T1
普通解法為二叉樹遍歷+匹配問題,考察t1中每個節點為頭的子樹是否與t2一致,時間復雜度為O(N*M),N代表t1節點數,M代表t2節點數。
但是這道題的最優解為O(M+N),將t1序列化為字符串str1,t2序列化為字符串str2,用KMP算法判斷str1中是否含有str2
Case2.
給定兩個字符串str1和str2,如果str1和str2中出現的字符種類一樣且每種字符出現的次數也一樣,那么str1與str2互為變形詞,請實現函數判斷兩個字符是否互為變形詞。
舉例:
Str1=“123”,str2=“231”,返回true
Str1=“123”,str2=“2331”,返回false
可以使用哈希表做字符計數,兩個 str生成兩個哈希表,比較兩個表的記錄是否一致。也可以用固定長度的數組代替哈希表結構。
Case3.
給定一個字符串str,把字符串str前面任意的部分挪到后面去形成的字符串叫做str的旋轉詞。比如str=“1234”,str的旋轉詞有:“1234”,“2341”,“3412”,“4123”,給定兩個字符串a和b,請判斷a和b是否互為旋轉詞。
舉例:
a=”cdab”,b=”abcd”,返回true
a=”1ab2”,b=”ab12”,返回false
本題最優解時間復雜度O(N)
首先判斷str1與str2是否長度相等,如果長度相等,生成str1+str2的大字符串,用KMP算法判斷大字符串中是否含有str2
舉例說明:
str1=“1 2 3 4”
str1+str1=”1 2 3 4 1 2 3 4”
1234,2341,3412,4123都是它的旋轉詞
Case4.
給定一個字符串,請在單詞間做逆序調整
舉例:
“pig loves dog”逆序為“dog loves pig”
先寫一個讓所有字符逆序的函數f,用函數f將句子整體的字符逆序:“pig loves dog”變為“god sevol gip”,然后用f將每一個單詞逆序,最后得到“dog loves pig”
Case5.
給定一個字符串str,和一個整數i,i代表str中的位置,將str[0..i]移到右側,str[i+1..N-1]移到左側
舉例:
str=“ABCDE“,I=2,將str調整為”DEABC“
要求時間復雜度O(N),額外空間復雜度O(1)
因為有空間復雜度要求,所以不能開辟新數組,之能在原數組基礎上操作。首先將str[0..i]部分的字符逆序ABCDE:CBADE,再將str[i+1..N-1]部分的字符逆序,CBADE:CBAED,最后將整個的字符逆序,CBAED:DEABC
Case6.
給定一個字符串類型的數組strs,請找到一種拼接順序,使得所有的字符串拼接起來組成的大字符串是所有可能性中字典順序最小的,并返回這個大字符串。
舉例:
Strs=[“abc”,”de”],可以拼成“abcde“,也可以拼成”deabc“,但前者字典順序更小,所以返回”abcde“
Strs=[“b”,”ba”],可以拼成“bba“,也可以拼成”bab“,但后者字典順序更小,所以返回”bab“。
最優解的時間復雜度O(N*logN)
錯誤方案:根據單獨每個字符串的字典順序排序
正確方案:如果str1+str2<str2+str1,則str1放在前面,否則str2放在前面
Case7.
給定一個字符串str,將其中所有空格字符替換成“%20“,假設str后面有足夠的空間。
Str=”a b c”
遍歷str,發現空格數為2,所以在str替換后,長度為5+2*2=9
然后從后開始遍歷str,將c放在第九個位置,結果為a%20b%20c
Case8.
給定一個字符串str,判斷是不是整體有效的括號字符串
舉例:
Str=”()”,返回true;str=“(()())“,返回true;str=”(())“,返回true;
Str=“())“,返回false;str=”()(“,返回false;str=”()a()“,返回false;
本題時間復雜度O(N),額外空間復雜度O(1)
01.整形變量num,代表’(’出現次數與‘)’出現次數的差值
02.遍歷的過程,遇到‘(’,num++,遇到‘)’,num—
03.遍歷的過程中如果num<0,則直接返回false
04.如果一直沒出現03的情況,則一直遍歷下去
05.遍歷完成后,如果num==0,則返回true,否則返回false
Case9.
給定一個字符串str,返回str中的最長無重復字符子串的長度
舉例:
str=”abcd”,返回4
str=“abcd”,最長無重復子串為“abc”,返回3
本題最優解時間復雜度為O(N),額外空間復雜度O(N).
求出以str中每個字符結尾的情況下,最長無重復字符子串的長度,并在其中找出最大值返回。思路:由于這個題目只要給出最長不重復子串的長度,所以代碼比較簡單。第一思路就是利用哈希表來進行操作。用字符當做鍵值,字符在串中的位置當做實值。用pre變量記錄字符第一次出現的位置,最大長度max就是利用當前位置減去pre就是當前最大長度了。
牛客網《BAT面試算法精品課》筆記三:隊列和棧
牛客網《BAT面試算法精品課》筆記四:鏈表
牛客網《BAT面試算法精品課》筆記五:二分搜索
牛客網《BAT面試算法精品課》筆記六:二叉樹
牛客網《BAT面試算法精品課》筆記七:位運算
牛客網《BAT面試算法精品課》筆記八:排列組合
牛客網《BAT面試算法精品課》筆記九:概率
牛客網《BAT面試算法精品課》筆記十:大數據
牛客網《BAT面試算法精品課》筆記十一:動態規劃
轉載于:https://www.cnblogs.com/liguo-wang/p/10731419.html
總結
以上是生活随笔為你收集整理的牛客网《BAT面试算法精品课》学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 思必驰携手博泰,共创智能汽车新声代
- 下一篇: JDBC更新数据