这是Verse 2 第一篇在每天一个js小算法(日更 21天) 是FCC的基础算法部分 这篇则是进阶算法 有点难度估计会花点时间
没有看第一篇的同学(吃瓜不明真相的群众
) 可以点进去观看(链接如上
) 如果懒 我再把它在贴出来
开始找有没有可以学习或者练习基本算法的学习平台或者课程
有很多推荐的我就例举几个 其他的请各位自行百度
首选 | 其他 |
---|---|
- CodeWar codewar | - Leecode Leecode很多大神都用这个去刷题 我只是听说但从未刷过一道题 |
- FCC freecodecamp | - 考研的同学刷机试题 牛客 求职的同学还可以刷面试题 很牛皮 |
有哪些学习算法的网站推荐?
另外看到了其他几个听说超级有用不知真假
geeksforgeeks
一个小学生的算法竞赛题库
Lintcode 这个我逛了逛也可以的
看了以上几个网站以及回答 我选择了之前写过一些东西的FCC 因为都是基础的 也不想一步登天且这种白日梦不存在的 so 脚踏实地的开始
规则如下:
- 如果当天不完成或者各种理由推拖了 次日补
- 不能找答案(
原则性问题不得触犯
) 没能做出来或实现时间影响了日常工作 作为标记跳过 以后再来刷 - 解决思路+代码注释
if 但凡是触犯了以上任意规则 自动退出 不在更新 发朋友圈一张自己最丑的图且截图放到此Blog
(女人...不对...男人就要对自己狠一点)
不求数量 但求质量
为了以后写代码顺畅些 没别的愿景 因为一旦卡住我脑子就会陷入一种很难描述的情况
抓狂+1000个黑人问号脸 => 百度 => change code =>百度 的死循环
每次都是到了第二天脑子顺畅的时候一会儿就实现了 这种现象我表示很迷
7月30日
12:13:42
早晨一直看书(js语言精粹
)到刚刚 因为今天老板不在 一刻不停歇的看书 就担心他回来开会 又是一堆需求没办法学习了(这样说是不是太装逼 会被打
) 书上知识点同时我会更新到另一篇blog js语言精粹 正在看刚到一半儿
-
实现两个数字之间所有数字的和
Sum All Numbers in a Range
function factorialize(num) {
if (num < 0) {
return -1;
} else if (num === 0 || num === 1) {
return 1;
} else {
return (num * factorialize(num - 1));
}
}
/*公式方法*/
function sumAll(arr) {
return (arr[0] + arr[1])*(Math.abs(arr[0] - arr[1]) + 1)/2; (a+b)×(b-a+1)÷2
}
讲道理还是数学公式好事,但是用reduce()方法没做 对 就是因为懒
-
两个数组做差
python直接一个方法就搞定了
indexOf() slice() concat() filter()
Diff Two Arrays
function diff(arr1, arr2) {
return arr1.filter(function(v){
return arr2.indexOf(v)==-1;
}).concat(arr2.filter(function(v){
return arr1.indexOf(v)==-1;
}));
}
diff([1, 2, 3, 5], [1, 2, 3, 4, 5]);
还有一个麻烦一定的办法 将传的参数分别在做个循环然后塞进一个数组 并返回 其实一个道理 所以我觉得数组这些方法的底层实现跟我这个方法类似 所以 找找每个Array的方法底层实现源码
-
数字转换成罗马数字 这个先放一放 等有思路了在来
indexOf() splice() join()
Roman Numeral Converter
- **** 这个没看懂 我.....
indexOf() splice() join()
Where art thou
-
替换字符串中指定字符 看参数 即可明白 终于有一个能做了🤔🤔🤔🤔🤔🤔🤔🤔🤔🤔
replace() splice() join()
Search and Replace
function myReplace(str,before,after){
if(before[0] === before[0].toUpperCase()){
after = after[0].toUpperCase() + after.slice(1);
}
str = str.replace(before,after);
return str;
}
myReplace("A quick brown fox jumped over the lazy dog", "jumped", "leaped");
这个是最容易想到的 也有别的思路 但是我今天得早点回家 交房租~~~ F**K!!!
7月31日
09:18:30
昨天下班时间看了你有多久没更新过简历了? 很有感触 万一自己以后想跳槽去好一点的公司不再小公司厮混自己单挑独斗 简历必然是重要的 脑子里一直回想要不刷个面试题?要不写个刷面试题的Blog? 算了,一个一个来太急反而适得其反 把眼前的stuff写完然后在bb or yy
-
把指定的字符串翻译成 pig latin 直到找到第一个元音 把第一个原因之前的str 截取并拼接到最后 str的第一个字符就是元音 str+"way" 这道题我竟然花了30分钟 花了两种方法 这个简便一些也看着更顺
另一种是我把str分成数组去做的有一点点麻烦
indexOf() split() join() push()
Pig Latin
function translate(str) {
var _yuan = ["a","e","i","o","u"];
if(_yuan.indexOf(str[0]) >= 0){
return str + "way";
}
while(_yuan.indexOf(str[0]) < 0){
str = str.substr(1) + str.substr(0,1);
}
return str + "ay";
}
translate("california");
// 2. 未完成~~~
function translate(str) {
var _yuan = ['a','e','i','o','u']
var new_arr = str.split("")
var ae = []
new_arr.forEach((item)=>{
if(_yuan.indexOf(item)!==-1){
ae.push(item)
}
})
console.log(new_arr.join("").substr(new_arr.indexOf(ae[0]))+"ay")
}
translate("california");
8月1日
09:57:40
1.字母序列中找到缺失的字母并返回它,如果所有字母都在序列中,返回 undefined
遍历字符串,如果前一个字符的ASCII码不是后一个字符ASCII码+1,就判断为丢失字符,返回丢失的字符。
丢失的字符只能通过ASCII码的转换来获得。
charCodeAt() | fromCharCode()
Missing letters
function fearNotLetter(str) {
for(var i=0,len=str.length;i<len;i++){
var _tag= str.charCodeAt(i+1)-str.charCodeAt(i);
if(_tag>1){
return String.fromCharCode(str.charCodeAt(i)+1);
}
}
return undefined;
}
fearNotLetter("abce");
今天就忙着新项目搭建和规划 基本没时间写 又来了一个项目 小程序的在线教育 双语的~~~又开始写小程序了
8-2 21:43
**现在人在深圳 老板带我一起来谈个项目 才拿到手机 手机码字太辛苦 早上突然要求我穿干净的衣服来 我呵呵了 平时不干净? 明天回去补…… **
网友评论