今天写代码的时候 处理定时器相关代码的时候遇到一个很基本的算法 卡住了很久 很气 相当气 然后开始思考为什么自己这么傻?
为什么自己写不出来然后意象不到的焦虑感油然而生 我怎么连这么简单的**都不会 然后冷静了下 觉得自己很有必要提升下简单以及基本的算法能力
我:"
这个好简单应该可以实现
" (就这么过了三个小时 一动不动 腰都快断了)
内心的自己:"你是真的好傻 这么简单的东西写这么久?
"(然后开始找别人的代码,好高大上)
我:"怎么别人这么牛p 我为什么就写不出来呢?
"
内心的自己:"没事儿 人家经验比你丰富而已
" (开始安慰自己)
我:"不行不行 还是基础太差 才会导致这样的问题 我要重新在来一遍就当是复习了
"
内心的自己:"shit 这么做很累的 累死你 腰椎出了问题 活该🤐🤐🤐🤐🤐
"
我:"Whatever 🙄🙄🙄🙄🙄
"
就这样跟自己做了很久得斗争 开始找有没有可以学习或者练习基本算法的学习平台或者课程
有很多推荐的我就例举几个 其他的请各位自行百度
首选 | 其他 |
---|---|
- CodeWar codewar | - Leecode Leecode很多大神都用这个去刷题 我只是听说但从未刷过一道题 |
- FCC freecodecamp | - 考研的同学刷机试题 牛客 求职的同学还可以刷面试题 很牛皮 |
有哪些学习算法的网站推荐?
另外看到了其他几个听说超级有用不知真假
geeksforgeeks
一个小学生的算法竞赛题库
Lintcode 这个我逛了逛也可以的
看了以上几个网站以及回答 我选择了之前写过一些东西的FCC 因为都是基础的 也不想一步登天且这种白日梦不存在的 so 脚踏实地的开始
规则如下:
- 如果当天不完成或者各种理由推拖了 次日补
- 不能找答案(
原则性问题不得触犯
) 没能做出来或实现时间影响了日常工作 作为标记👇👇👇跳过 以后再来刷 - 解决思路+代码注释
if 但凡是触犯了以上任意规则 自动退出 不在更新 发朋友圈一张自己最丑的图且截图放到此Blog
(女人...不对...男人就要对自己狠一点)
不求数量 但求质量
为了以后写代码顺畅些 没别的愿景 因为一旦卡住我脑子就会陷入一种很难描述的情况
抓狂+1000个黑人问号脸 => 百度 => change code =>百度 的死循环
每次都是到了第二天脑子顺畅的时候一会儿就实现了 这种现象我表示很迷
- 反转一个整数 支持负数了 之前没想到
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日
- 实现阶乘(递归)
function factorialize(num) {
// 请把你的代码写在这里
if (num < 0) {
return -1;
} else if (num === 0 || num === 1) {
return 1;
} else {
return (num * factorialize(num - 1));
}
}
factorialize(5);
- 回文 - 正念反念都一样
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
中午休息写两个 感觉不错 睡会儿 下午继续偷摸er的写 被领导发现又得bulabulabula...
🤐🤐🤐🤐🤐
-
找出最长单词 这个有很多种解决办法 我只是用了个蠢一点最早想到的方法
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 今天估计得住这儿了
之所以留这儿 是因为项目拖了两天 客户又急
哎 小公司就是受人欺负 客户一句话 我就得加班
也怪自己白天净干些没用的 哈哈哈哈 不说了继续继续
-
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");
-
返回数组中最大的数 其实还有一种就是用for循环 但是我懒🙄🙄🙄 不想写了
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]]);
以上题目看似很简单(实际上也很简单) 但就是实现不出来 憋半天憋一道题 心累
继续继续
-
判断字符串是否是指定字符结尾
这只是一种思路
我这个有点过去简单粗暴了 小伙伴们如果有更多答案 可以留言 探讨下 我是战五渣 所以见谅
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");
-
重复字符串指定次数 这个确实有用 刚开始得保存一次
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);
网友评论