原创 劍指offer:js實現連續子數組的最大和

題目:輸入一個整型數組,數組裏有正數也有負數,數組的一個或連續多個整數組成一個子數組。求所有子數組的和的最大值 思路: 使用窮舉法,把所有的可能列出來 舉例分析規律 如果累加時發現累加到了一個負數,數字越來越小,則把之前的數存

原创 全排列

let str = 'abc'; const getPL = str =>{ if(typeof str !== 'string'){ return false;

原创 劍指offer:js實現字符串的排序

題目:給定一個字符串,輸出他的全排列。abc=>abc,acb,bac,bca,cab,cba 思路:使用遞歸,當長度爲1的時候,直接輸出,長度大於1,循環,將每個位置的字符串分別設置爲固定點。 比如我們在算abc的全排列的時候,

原创 劍指offer:js實現斐波拉契數列

題目:前兩項爲1,第三項起每一項是前兩項的和 思路:遞歸的常見題 function fib(n){ if(n < 3){ return 1; } return fib(n-1)+fib(n-

原创 面試題:從輸入url到頁面展示

1.dns解析 爲什麼需要dns解析? TCP/IP協議只認識ip地址,不認識域名,域名的設計爲了方便記憶,讓你記住一個baidu.com遠比記錄一個180.101.49.12靠譜. 具體什麼是dns解析? d=domain n=

原创 劍指offer:js實現pow函數

題目:實現 pow(實數,整數),求實數的整數次方,不考慮大數問題. 思路:讓實數循環相乘整數次,但是要考慮負數的情況,負數要取倒數,0的倒數無意義 let myPow = (n,e)=>{ let fla

原创 劍指offer:js實現把數字翻譯成字符串

題目:給定一個數字,我們按照如下的規則把它翻譯爲字符串:將 0-25 分別對應翻譯到 a-z 字符,如 0 翻譯成 a,以此類推。一個數字可能有多少種翻譯。例如,12258 有 5 種不同的翻譯,分別是 “bccfi”、”bwfi

原创 算法題:關於窮舉

關於窮舉 可能有的人會說,窮舉的效率最差,時間複雜度和空間複雜度最高。但是對於應屆生校招來說,窮舉是最容易想到的思路了。 可能你在算法領域纔剛剛入門,很多題目的思路也不清晰,這時候又來了一份筆試題,空着意味着gg,硬着頭皮找思路卻

原创 劍指offer:js實現二進制中1的個數

題目:給出一個整數,求出這個數轉換成二進制中出現1的個數 思路:n&(n-1) 可以消掉末尾的一個1,循環直到0爲止 常規解法不應該使用n來作爲右移,負數右移0x80000000變成0xC000000 C = 1100 8 = 1

原创 劍指offer:js實現兩個棧模擬隊列

題目:使用兩個棧來模擬隊列 思路:模擬先入先出的特點,出棧時使用另一個棧來反轉原來棧裏的內容,已達到先入先出的效果。 function Queue() { let s1 = []; let s2 = [];

原创 劍指offer:js實現把數組排成最小的數

題目:輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印出最小的一個數。 輸入[3,32,321] 打印出 321323 思路:窮舉得出最小值 const getArrPl = arr =>{ i

原创 劍指offer:js實現剪繩子

題目:給你一根長度爲n的繩子,請剪成m段n>1,m>1,使剩下的繩子乘積爲最大值. 例:8 => 2 * 3 * 3 = 18 思路:動態規劃,比如8,第一次切割可以分成8-1種切法,將最優解存儲起來。 let n = 8; fu

原创 劍指offer:js實現正則表達式匹配

題目:實現 正則表達式. * 的匹配 思路: 當模式中的第二個字符不是“*”時: 如果字符串第一個字符和模式中的第一個字符相匹配,那麼字符串和模式都後移一個字符,然後匹配剩餘的。 如果 字符串第一個字符和模式中的第一個字符相

原创 劍指offer:js實現二叉樹鏡像

題目:給定一個二叉樹,將該二叉樹鏡像輸出 思路:畫圖即可知道左右子節點分別交換可得 let tree = { value:0, left:{ value:1,

原创 劍指offer:js實現最小棧

題目:定義棧的數據結構,使新的棧可以用O(1)的時間複雜度獲取最小值 思路:使用第二個棧來存儲最小值 function Stack(){ let arr = []; let minArr