让前端飞Web 前端开发

每天一个js小算法(日更 21天) - V 2.0

2018-07-30  本文已影响10人  zz77zz

这是Verse 2 第一篇在每天一个js小算法(日更 21天) 是FCC的基础算法部分 这篇则是进阶算法 有点难度估计会花点时间

没有看第一篇的同学(吃瓜不明真相的群众) 可以点进去观看(链接如上) 如果懒 我再把它在贴出来

开始找有没有可以学习或者练习基本算法的学习平台或者课程
有很多推荐的我就例举几个 其他的请各位自行百度

首选 其他
- CodeWar codewar - Leecode Leecode很多大神都用这个去刷题 我只是听说但从未刷过一道题
- FCC freecodecamp - 考研的同学刷机试题 牛客 求职的同学还可以刷面试题 很牛皮

有哪些学习算法的网站推荐?
另外看到了其他几个听说超级有用不知真假
geeksforgeeks
一个小学生的算法竞赛题库
Lintcode 这个我逛了逛也可以的
看了以上几个网站以及回答 我选择了之前写过一些东西的FCC 因为都是基础的 也不想一步登天且这种白日梦不存在的 so 脚踏实地的开始

规则如下:

  1. 如果当天不完成或者各种理由推拖了 次日补
  2. 不能找答案(原则性问题不得触犯) 没能做出来或实现时间影响了日常工作 作为标记跳过 以后再来刷
  3. 解决思路+代码注释
    if 但凡是触犯了以上任意规则 自动退出 不在更新 发朋友圈一张自己最丑的图且截图放到此Blog (女人...不对...男人就要对自己狠一点)

不求数量 但求质量

为了以后写代码顺畅些 没别的愿景 因为一旦卡住我脑子就会陷入一种很难描述的情况
抓狂+1000个黑人问号脸 => 百度 => change code =>百度 的死循环
每次都是到了第二天脑子顺畅的时候一会儿就实现了 这种现象我表示很迷

7月30日

12:13:42 早晨一直看书(js语言精粹)到刚刚 因为今天老板不在 一刻不停歇的看书 就担心他回来开会 又是一堆需求没办法学习了(这样说是不是太装逼 会被打) 书上知识点同时我会更新到另一篇blog js语言精粹 正在看刚到一半儿

  1. 实现两个数字之间所有数字的和
    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()方法没做 对 就是因为懒

  1. 两个数组做差 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的方法底层实现源码

  1. 数字转换成罗马数字 这个先放一放 等有思路了在来
    indexOf() splice() join()
    Roman Numeral Converter

  1. **** 这个没看懂 我.....
    indexOf() splice() join()
    Where art thou

  1. 替换字符串中指定字符 看参数 即可明白 终于有一个能做了🤔🤔🤔🤔🤔🤔🤔🤔🤔🤔
    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

  1. 把指定的字符串翻译成 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

**现在人在深圳 老板带我一起来谈个项目 才拿到手机 手机码字太辛苦 早上突然要求我穿干净的衣服来 我呵呵了 平时不干净? 明天回去补…… **

上一篇下一篇

猜你喜欢

热点阅读