友情提示:
此博客較長(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ī)則如下:
- 如果當(dāng)天不完成或者各種理由推拖了 次日補(bǔ)
- 不能找答案(
原則性問題不得觸犯
) 沒能做出來或?qū)崿F(xiàn)時(shí)間影響了日常工作 作為標(biāo)記跳過 以后再來刷 - 解決思路+代碼注釋
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ù)...
-
截?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寫成日記 我也是服了自己
-
指定數(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í)間~~~
- 截?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ù)寫
-
比較字符串 后者是不是前者的子集
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"]);
-
過濾數(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ì)順暢很多 也只能這么安慰自己的愚蠢了
-
銷毀數(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() 真的花了我很久 很懊惱 多練練
-
數(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次 活活把我弄死
-
凱撒密碼 移位密碼绞旅。
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!!!!