友情提示:
此博客較長 需要您8-12分鐘時間閱讀 有FCC的初級算法題 和 一些有的沒的分享
另外中級篇 每天一個js小算法(日更 21天) - V 2.0 也寫完了
有些題忘記加注釋了 后續(xù)會加上的
今天
2018-7-23寫代碼的時候 處理定時器相關代碼的時候遇到一很基本的算法 卡了很久 很氣 相當氣 開始思考為什么自己這么傻?甚至開始懷疑人生...
為什么寫不出來? 焦慮感油然而生 覺得自己很有必要提升下簡單以及基本的算法能力
我:"
這個好簡單應該可以實現(xiàn)" (就這么過了三個小時 一動不動 腰都快斷了)
內(nèi)心的自己:"你是真的好傻 這么簡單的東西寫這么久?"(然后開始找別人的代碼,好高大上)
我:"怎么別人這么牛p 我為什么就寫不出來呢?"
內(nèi)心的自己:"沒事兒 人家經(jīng)驗比你豐富而已" (開始安慰自己)
我:"不行不行 還是基礎太差 才會導致這樣的問題 我要重新在來一遍就當是復習了"
內(nèi)心的自己:"shit 這么做很累的 累死你 腰椎出了問題 活該??????????"
我:"Whatever"
就這樣跟自己做了很久得斗爭 開始找有沒有可以學習或者練習基本算法的學習平臺或者課程
有很多推薦的我就例舉幾個 其他的請各位自行百度
| 首選 | 其他 |
|---|---|
| - CodeWar codewar | - Leecode Leecode很多大神都用這個去刷題 我只是聽說但從未刷過一道題 |
| - FCC freecodecamp | - 考研的同學刷機試題 ???/a> 求職的同學還可以刷面試題 很牛皮 |
有哪些學習算法的網(wǎng)站推薦?
另外看到了其他幾個聽說超級有用不知真假
geeksforgeeks
一個小學生的算法競賽題庫
Lintcode 這個我逛了逛也可以的
看了以上幾個網(wǎng)站以及回答 我選擇了之前寫過一些東西的FCC 因為都是基礎的 也不想一步登天且這種白日夢不存在的 so 腳踏實地的開始
規(guī)則如下:
- 如果當天不完成或者各種理由推拖了 次日補
- 不能找答案(
原則性問題不得觸犯) 沒能做出來或?qū)崿F(xiàn)時間影響了日常工作 作為標記跳過 以后再來刷 - 解決思路+代碼注釋
if 但凡是觸犯了以上任意規(guī)則 自動退出 不在更新 發(fā)朋友圈一張自己最丑的圖且截圖放到此Blog(女人...不對...男人就要對自己狠一點)
開始時間 - 結(jié)束時間

不求數(shù)量 但求質(zhì)量
為了以后寫代碼順暢些 沒別的愿景 因為一旦卡住我腦子就會陷入一種很難描述的情況
抓狂+1000個黑人問號臉 => 百度 => change code =>百度 的死循環(huán)
每次都是到了第二天腦子順暢的時候一會兒就實現(xiàn)了 這種現(xiàn)象我表示很迷
- 反轉(zhuǎn)一個整數(shù) 支持負數(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 實現(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中午休息寫兩個 感覺不錯 睡會兒 下午繼續(xù)偷摸er的寫 被領導發(fā)現(xiàn)又得bulabulabula...??????????
3 找出最長單詞 這個有很多種解決辦法 我只是用了個蠢一點最早想到的方法
Find the Longest Word in a String
function findLongestWord(str) {
// 請把你的代碼寫在這里
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 今天估計得住這兒了
之所以留這兒 是因為項目拖了兩天 客戶又急
哎 小公司就是受人欺負 客戶一句話 我就得加班
也怪自己白天凈干些沒用的 哈哈哈哈 不說了繼續(xù)繼續(xù)
4 string 里的每個單詞首字母大寫
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 返回數(shù)組中最大的數(shù) 其實還有一種就是用for循環(huán) 但是我懶 不想寫了
Return Largest Numbers in Arrays
function largestOfFour(arr) {
// 請把你的代碼寫在這里
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]]);
以上題目看似很簡單(實際上也很簡單) 但就是實現(xiàn)不出來 憋半天憋一道題 心累 繼續(xù)繼續(xù)
6 判斷字符串是否是指定字符結(jié)尾 這只是一種思路 我這個有點過去簡單粗暴了 小伙伴們?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 重復字符串指定次數(shù) 這個折騰了一會兒 剛開始得保存一次 沒想到
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個 今天未知 因為昨晚寫到3點多 客戶看完覺得還可以就睡了 今天不知道客戶還會有什么神奇古怪的需求 我快寫成一套系統(tǒng)了?? 繼續(xù)繼續(xù)...
-
截斷字符串
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 吃飯回來睡了一會兒 昨天這會兒還在寫來著 估計是昨晚睡的太晚了 瞌睡的爆炸
友情提示: 別熬夜 一個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
手機碼字 今天下午 到點就走沒加班,太累 忘記在簡書繼續(xù)寫下去 ???
沒有筆記本 就只能手機碼字 剛在看書《一個孤獨漫步者的遐想》當然這部分跟標題嚴重不符 只想寫出來分享記錄下裝逼


我渴望學習是為了認知自我,不是為了教育他人;我一直認為教導別人之前必須了解自己 ——盧梭
而我恰恰是 為了養(yǎng)活自己
墻裂安利個app timing 最有用的就是番茄時間管理 25分鐘放下所有事情專注于一件事 簡單粗暴高效
或者自己寫個小程序給自個兒用 裝個逼
手機上不去FCC有點可惜
說了挺多跟標題不符的東西
其實就是為了記錄給自己看
改變一種知識分享的方式,加入自己的東西和想法就會產(chǎn)生更容易更傾向于分享的心態(tài) 我覺得是雙利
一個自己形成記錄的習慣,二來別人也能得到自己想要的部分 挺好

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

- 截斷數(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這種 因為不熟練indexOf()的用法 花了挺長時間
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 下班時間到了 但是我想多完成兩個在回家 今天在Vue里坑了太久時間 有太多東西不會我壓根就不想學vue 等把基礎打好了 用起來就會順暢很多 也只能這么安慰自己的愚蠢了
-
銷毀數(shù)組中指定的值
[1,2,3],2,3它跟我想的還不一樣 我是想把除了第一項之外的參數(shù)全部push進一個新的數(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);
花了半個多小時 去解一道題 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);
這個就很快
今日總結(jié):filter() indexOf() 非常讓我頭疼 我在找?guī)讉€場景練習一下 真的好痛苦 一道題解將近一個小時
arguments | arr.filter | Boolean | arr.indexOf | str.slice | str.substr | | arr.slice | arr.splice 今天就涉及到這么多
20:35:12 回家回家 太晚了 餓死了
7-27
10:04:58 有個問題簡單處理了一下就是定時器的暫停繼續(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語言精粹》
看到51頁 閉包

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