每天一個(gè)js小算法(日更 21天)

友情提示:
此博客較長(zhǎng) 需要您8-12分鐘時(shí)間閱讀 有FCC的初級(jí)算法題 和 一些有的沒的分享
另外中級(jí)篇 每天一個(gè)js小算法(日更 21天) - V 2.0 也寫完了
有些題忘記加注釋了 后續(xù)會(huì)加上的

今天2018-7-23寫代碼的時(shí)候 處理定時(shí)器相關(guān)代碼的時(shí)候遇到一很基本的算法 卡了很久 很氣 相當(dāng)氣 開始思考為什么自己這么傻?甚至開始懷疑人生...
為什么寫不出來御蒲? 焦慮感油然而生 覺得自己很有必要提升下簡(jiǎn)單以及基本的算法能力

:"這個(gè)好簡(jiǎn)單應(yīng)該可以實(shí)現(xiàn)" (就這么過了三個(gè)小時(shí) 一動(dòng)不動(dòng) 腰都快斷了)
內(nèi)心的自己:"你是真的好傻 這么簡(jiǎn)單的東西寫這么久?"(然后開始找別人的代碼,好高大上)
:"怎么別人這么牛p 我為什么就寫不出來呢平委?"
內(nèi)心的自己:"沒事兒 人家經(jīng)驗(yàn)比你豐富而已" (開始安慰自己)
:"不行不行 還是基礎(chǔ)太差 才會(huì)導(dǎo)致這樣的問題 我要重新在來一遍就當(dāng)是復(fù)習(xí)了"
內(nèi)心的自己:"shit 這么做很累的 累死你 腰椎出了問題 活該??????????"
:"Whatever"

就這樣跟自己做了很久得斗爭(zhēng) 開始找有沒有可以學(xué)習(xí)或者練習(xí)基本算法的學(xué)習(xí)平臺(tái)或者課程
有很多推薦的我就例舉幾個(gè) 其他的請(qǐng)各位自行百度

首選 其他
- CodeWar codewar - Leecode Leecode很多大神都用這個(gè)去刷題 我只是聽說但從未刷過一道題
- FCC freecodecamp - 考研的同學(xué)刷機(jī)試題 牛客 求職的同學(xué)還可以刷面試題 很牛皮

有哪些學(xué)習(xí)算法的網(wǎng)站推薦夺谁?
另外看到了其他幾個(gè)聽說超級(jí)有用不知真假
geeksforgeeks
一個(gè)小學(xué)生的算法競(jìng)賽題庫(kù)
Lintcode 這個(gè)我逛了逛也可以的
看了以上幾個(gè)網(wǎng)站以及回答 我選擇了之前寫過一些東西的FCC 因?yàn)槎际腔A(chǔ)的 也不想一步登天且這種白日夢(mèng)不存在的 so 腳踏實(shí)地的開始

規(guī)則如下:

  1. 如果當(dāng)天不完成或者各種理由推拖了 次日補(bǔ)
  2. 不能找答案(原則性問題不得觸犯) 沒能做出來或?qū)崿F(xiàn)時(shí)間影響了日常工作 作為標(biāo)記跳過 以后再來刷
  3. 解決思路+代碼注釋
    if 但凡是觸犯了以上任意規(guī)則 自動(dòng)退出 不在更新 發(fā)朋友圈一張自己最丑的圖且截圖放到此Blog (女人...不對(duì)...男人就要對(duì)自己狠一點(diǎn))

開始時(shí)間 - 結(jié)束時(shí)間

不求數(shù)量 但求質(zhì)量

為了以后寫代碼順暢些 沒別的愿景 因?yàn)橐坏┛ㄗ∥夷X子就會(huì)陷入一種很難描述的情況
抓狂+1000個(gè)黑人問號(hào)臉 => 百度 => change code =>百度 的死循環(huán)
每次都是到了第二天腦子順暢的時(shí)候一會(huì)兒就實(shí)現(xiàn)了 這種現(xiàn)象我表示很迷

  • 反轉(zhuǎn)一個(gè)整數(shù) 支持負(fù)數(shù)了 之前沒想到
const reverseInteger = function (number) {
    var str = String(number)
    if(str.length>9) return 0
    if(str.charAt(0) == "-"){
        var str_r = String(number).substr(1,str.length)
        return parseInt("-"+str.split("").reverse().join(""))
    }
    
    return parseInt(str.split("").reverse().join(""))
}

reverseInteger(-123)

7月24日

1 實(shí)現(xiàn)階乘(遞歸)

function factorialize(num) {
  if (num < 0) { 
        return -1; 
    } else if (num === 0 || num === 1) { 
        return 1; 
    } else { 
        return (num * factorialize(num - 1)); 
    } 
}

factorialize(5);

2 回文 - 正念反念都一樣

function palindrome(str) {
  var new_str  = str.replace(/[^a-zA-Z0-9]/g,'').toLowerCase().split('');
  return new_str.join('') === new_str.reverse().join('')?  true : false;
}
palindrome("never odd or even");

7月24日14:34:24中午休息寫兩個(gè) 感覺不錯(cuò) 睡會(huì)兒 下午繼續(xù)偷摸er的寫 被領(lǐng)導(dǎo)發(fā)現(xiàn)又得bulabulabula...??????????

3 找出最長(zhǎng)單詞 這個(gè)有很多種解決辦法 我只是用了個(gè)蠢一點(diǎn)最早想到的方法
Find the Longest Word in a String

function findLongestWord(str) {
  // 請(qǐng)把你的代碼寫在這里
  var new_str = str.split(" ");
  var arr = [];
  for(var i = 0;i<new_str.length;i++){
    arr.push(new_str[i].length);
  }
  return arr.sort(function(a,b){
        return b-a;
    })[0];
}

findLongestWord("The quick brown fox jumped over the lazy dog");

2018年7月24日23:30:53
這么晚了還沒回家呢 fuck 今天估計(jì)得住這兒了
之所以留這兒 是因?yàn)轫?xiàng)目拖了兩天 客戶又急
哎 小公司就是受人欺負(fù) 客戶一句話 我就得加班
也怪自己白天凈干些沒用的 哈哈哈哈 不說了繼續(xù)繼續(xù)
4 string 里的每個(gè)單詞首字母大寫
Title Case a Sentence

function titleCase(str) {
  return str.toLowerCase().split(" ").map((item)=>{
    return item.replace(item.charAt(0),item[0].toUpperCase())
}).join(" ")
}
titleCase("I'm a little tea pot");

5 返回?cái)?shù)組中最大的數(shù) 其實(shí)還有一種就是用for循環(huán) 但是我懶 不想寫了
Return Largest Numbers in Arrays

function largestOfFour(arr) {
  // 請(qǐng)把你的代碼寫在這里
  var new_arr = [];
  for(var i=0;i<arr.length;i++){
    arr[i].sort(function(a,b){
        return b-a;             
      });     
    new_arr.push(arr[i][0]);
  }
  return new_arr;
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);

以上題目看似很簡(jiǎn)單(實(shí)際上也很簡(jiǎn)單) 但就是實(shí)現(xiàn)不出來 憋半天憋一道題 心累 繼續(xù)繼續(xù)

6 判斷字符串是否是指定字符結(jié)尾 這只是一種思路 我這個(gè)有點(diǎn)過去簡(jiǎn)單粗暴了 小伙伴們?nèi)绻懈啻鸢?可以留言 探討下 我是戰(zhàn)五渣 所以見諒
Confirm the Ending

function confirmEnding(str, target) { 
     return (str.substr(-target.length)==target) ? true:false;
}

confirmEnding("He has to give me a new name", "name");

7 重復(fù)字符串指定次數(shù) 這個(gè)折騰了一會(huì)兒 剛開始得保存一次 沒想到
Repeat a string repeat a string

function repeat(str, num) {
  if(num<=0)
      return "";
  var save_ = str
  for(var i=1;i<num;i++)
    str+=save_ ;
  return str;
}
repeat("abc", 3);

7月25日

11:16:59 昨天完成了7個(gè) 今天未知 因?yàn)樽蛲韺懙?點(diǎn)多 客戶看完覺得還可以就睡了 今天不知道客戶還會(huì)有什么神奇古怪的需求 我快寫成一套系統(tǒng)了?? 繼續(xù)繼續(xù)...

  1. 截?cái)嘧址?/strong>
    Truncate a string
function truncate(str, num) {
  if(num>=str.length) return str;
  if(num<=3) return str.slice(0,num)+"...";
  if(str.length>num) return str.slice(0,num-3)+"...";
}

truncate("Absolutely Longer", 2);

14:13:39 吃飯回來睡了一會(huì)兒 昨天這會(huì)兒還在寫來著 估計(jì)是昨晚睡的太晚了 瞌睡的爆炸
友情提示: 別熬夜 一個(gè)blog寫成日記 我也是服了自己

  1. 指定數(shù)目 分割數(shù)組
    Chunky Monkey
function chunk(arr, size) {
  var new_arr = [];
  for(var i=0; i<arr.length; i+=size){
    new_arr.push(arr.slice(i,i+size));
  }
  return new_arr;
}

chunk(["a", "b", "c", "d","e"], 2);

23:10
手機(jī)碼字 今天下午 到點(diǎn)就走沒加班也殖,太累 忘記在簡(jiǎn)書繼續(xù)寫下去 ???
沒有筆記本 就只能手機(jī)碼字 剛在看書《一個(gè)孤獨(dú)漫步者的遐想》當(dāng)然這部分跟標(biāo)題嚴(yán)重不符 只想寫出來分享記錄下裝逼

封面

不往史,你不想

我渴望學(xué)習(xí)是為了認(rèn)知自我撒踪,不是為了教育他人银锻;我一直認(rèn)為教導(dǎo)別人之前必須了解自己 ——盧梭

而我恰恰是 為了養(yǎng)活自己
墻裂安利個(gè)app timing 最有用的就是番茄時(shí)間管理 25分鐘放下所有事情專注于一件事 簡(jiǎn)單粗暴高效
或者自己寫個(gè)小程序給自個(gè)兒用 裝個(gè)逼

手機(jī)上不去FCC有點(diǎn)可惜
說了挺多跟標(biāo)題不符的東西
其實(shí)就是為了記錄給自己看
改變一種知識(shí)分享的方式纸巷,加入自己的東西和想法就會(huì)產(chǎn)生更容易更傾向于分享的心態(tài) 我覺得是雙利
一個(gè)自己形成記錄的習(xí)慣春感,二來別人也能得到自己想要的部分 挺好


7-26

10:30:15 我找到了《js語(yǔ)言精粹》pdf 準(zhǔn)備看這本書了 171頁(yè) 還算可以 一天50頁(yè)就3天看完了(這特么都是P話) 所以我也不知道要花多久 看完了我就寫個(gè)blog 估計(jì)也得一周左右的時(shí)間~~~

171頁(yè)

  1. 截?cái)鄶?shù)組

*Slasher Flick *

function slasher(arr, howMany) {
  var new_arr = [];
  if(howMany>arr.length) return [];
  if(howMany<arr.length)  arr.splice(0,howMany); 
  return arr;
}

slasher([1, 2, 3], 2);

13:05:33 中午午休 繼續(xù)寫

  1. 比較字符串 后者是不是前者的子集 abcd, acd 這種 因?yàn)椴皇炀歩ndexOf()的用法 花了挺長(zhǎng)時(shí)間
    Mutations
function mutation(arr) {
  var new_arr = [];
  for(var i = 0;i<arr.length;i++){
    new_arr.push(arr[i].toLowerCase());
  } 
var str1 = new_arr[0].split("");
var str2 = new_arr[1].split("");
for(var j = 0;j<str2.length;j++){
    if(str1.indexOf(str2[j]) == -1) {
        return false
    }
}
return true
}

mutation(["hello", "neo"]);
  1. 過濾數(shù)組中 false null 0 "" undefined NaN
    Falsy Bouncer
function bouncer(arr) {
  return arr.filter((item)=> Boolean(item));
}
bouncer([7, "ate", 0, false, 9]);

19:07:51 下班時(shí)間到了 但是我想多完成兩個(gè)在回家 今天在Vue里坑了太久時(shí)間 有太多東西不會(huì)我壓根就不想學(xué)vue 等把基礎(chǔ)打好了 用起來就會(huì)順暢很多 也只能這么安慰自己的愚蠢了

  1. 銷毀數(shù)組中指定的值 [1,2,3],2,3 它跟我想的還不一樣 我是想把除了第一項(xiàng)之外的參數(shù)全部push進(jìn)一個(gè)新的數(shù)組
    Seek and Destroy
function destroyer(arr) {
  var destroy_arr = arguments[0];
  var new_arr = [];
  for(var i=1;i<arguments.length;i++){
    new_arr.push(arguments[i]);
  }
  return destroy_arr.filter((item)=>{
    return new_arr.indexOf(item) == -1;
  });
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);

花了半個(gè)多小時(shí) 去解一道題 filter() indexOf() 真的花了我很久 很懊惱 多練練

  1. 數(shù)組排序并找出元素索引
    Where do I belong
function where(arr, num) {
  arr.push(num)
  arr.sort((a,b)=>{
    return a-b
})
  return arr.indexOf(num)
}
where([3, 10, 5], 3);

這個(gè)就很快
今日總結(jié):filter() indexOf() 非常讓我頭疼 我在找?guī)讉€(gè)場(chǎng)景練習(xí)一下 真的好痛苦 一道題解將近一個(gè)小時(shí)
arguments | arr.filter | Boolean | arr.indexOf | str.slice | str.substr | | arr.slice | arr.splice 今天就涉及到這么多
20:35:12 回家回家 太晚了 餓死了

7-27

10:04:58 有個(gè)問題簡(jiǎn)單處理了一下就是定時(shí)器的暫停繼續(xù) 又有新需求改了40次 活活把我弄死

  1. 凱撒密碼 移位密碼绞旅。
    Caesars Cipher
function rot13(str) {
   var new_arr=[];
  for(var i=0;i<str.length;i++){
     if(str.charCodeAt(i)<65||str.charCodeAt(i)>90){
       new_arr.push(str.charAt(i));
     }else if(str.charCodeAt(i)>77){
       new_arr.push(String.fromCharCode(str.charCodeAt(i)-13));
     }else{
       new_arr.push(String.fromCharCode(str.charCodeAt(i)+13));
     }
   }
   return new_arr.join("");
}
rot13("SERR PBQR PNZC");

19:47:11 今天看了很久《JavaScript語(yǔ)言精粹》

看到51頁(yè) 閉包


20:39:43 回家回家 明天繼續(xù)
FCC的初級(jí)算法over
能力有沒有提升我到?jīng)]什么感覺 就是比較詳細(xì)的知道了filter 等數(shù)組 字符串的函數(shù)
FCC的進(jìn)階算法 是另外寫一個(gè)博客
這篇寫的太長(zhǎng)不友好 影響各位大佬體驗(yàn)
that's all ~~~ 完結(jié) ~~~ 撒花~~~ Damn!!!!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蚕钦,一起剝皮案震驚了整個(gè)濱河市村象,隨后出現(xiàn)的幾起案子笆环,更是在濱河造成了極大的恐慌,老刑警劉巖厚者,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件躁劣,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡库菲,警方通過查閱死者的電腦和手機(jī)账忘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鳖擒,你說我怎么就攤上這事溉浙。” “怎么了蒋荚?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵戳稽,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我期升,道長(zhǎng)惊奇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任播赁,我火速辦了婚禮颂郎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘容为。我一直安慰自己乓序,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布舟奠。 她就那樣靜靜地躺著竭缝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沼瘫。 梳的紋絲不亂的頭發(fā)上抬纸,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音耿戚,去河邊找鬼湿故。 笑死,一個(gè)胖子當(dāng)著我的面吹牛膜蛔,可吹牛的內(nèi)容都是我干的坛猪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼皂股,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼墅茉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起呜呐,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤就斤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蘑辑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體洋机,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年洋魂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绷旗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喜鼓。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖衔肢,靈堂內(nèi)的尸體忽然破棺而出庄岖,到底是詐尸還是另有隱情,我是刑警寧澤膀懈,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布顿锰,位于F島的核電站,受9級(jí)特大地震影響启搂,放射性物質(zhì)發(fā)生泄漏硼控。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一胳赌、第九天 我趴在偏房一處隱蔽的房頂上張望牢撼。 院中可真熱鬧,春花似錦疑苫、人聲如沸熏版。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)撼短。三九已至,卻和暖如春挺勿,著一層夾襖步出監(jiān)牢的瞬間曲横,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工不瓶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留禾嫉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓蚊丐,卻偏偏與公主長(zhǎng)得像熙参,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子麦备,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,071評(píng)論 25 707
  • 我是個(gè)很懦弱無能的人孽椰,不甘于現(xiàn)狀,卻又不努力去改變凛篙。這句話盡管我說過很多次黍匾,可是卻一次也沒有去改變過,因?yàn)槿绻幸?..
    林里葉落閱讀 309評(píng)論 1 4
  • 天意的重要性 拿破侖用兵勝算往往達(dá)百分之九十九鞋诗,他說:還有那一小部分是天意。 可是迈嘹,硬幣是兩面的削彬,拿破侖也才看清這...
    司馬遠(yuǎn)九郎閱讀 620評(píng)論 0 1
  • 明天就是七夕全庸,對(duì)于有男朋友,幸福的他們或許是個(gè)完美的一天融痛。但是對(duì)于沒有找到以后的“他”的我們應(yīng)該怎么過壶笼,有的人就像...
    冰驕也傲閱讀 216評(píng)論 0 0
  • 不會(huì)日本網(wǎng)絡(luò)用語(yǔ),如何和11區(qū)網(wǎng)友們愉快地聊天呢雁刷?除了掌握基本日語(yǔ)口語(yǔ)外覆劈,我們還要認(rèn)識(shí)一些日本網(wǎng)絡(luò)用語(yǔ)。在本篇文章...
    悠悠飄落葉閱讀 650評(píng)論 0 0