美文网首页让前端飞程序员
每天一个js小算法(日更 21天)

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

作者: zz77zz | 来源:发表于2018-07-23 19:53 被阅读70次

    今天写代码的时候 处理定时器相关代码的时候遇到一个很基本的算法 卡住了很久 很气 相当气 然后开始思考为什么自己这么傻?
    为什么自己写不出来然后意象不到的焦虑感油然而生 我怎么连这么简单的**都不会 然后冷静了下 觉得自己很有必要提升下简单以及基本的算法能力

    :"这个好简单应该可以实现" (就这么过了三个小时 一动不动 腰都快断了)
    内心的自己:"你是真的好傻 这么简单的东西写这么久?"(然后开始找别人的代码,好高大上)
    :"怎么别人这么牛p 我为什么就写不出来呢?"
    内心的自己:"没事儿 人家经验比你丰富而已" (开始安慰自己)
    :"不行不行 还是基础太差 才会导致这样的问题 我要重新在来一遍就当是复习了"
    内心的自己:"shit 这么做很累的 累死你 腰椎出了问题 活该🤐🤐🤐🤐🤐"
    :"Whatever 🙄🙄🙄🙄🙄"

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

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

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

    规则如下:

    1. 如果当天不完成或者各种理由推拖了 次日补
    2. 不能找答案(原则性问题不得触犯) 没能做出来或实现时间影响了日常工作 作为标记👇👇👇跳过 以后再来刷
    3. 解决思路+代码注释
      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);
    

    相关文章

      网友评论

      • fangkyi03:告诉你个好消息 你能活到80岁 路还很长
        zz77zz:@fangkyi03 哈哈哈哈 谢谢你的大实话
      • xlayzheng:以后出题目可以从这里面选😂😂😂
        xlayzheng:@zz77zz 不是不是,给学弟们出题
        zz77zz:@xlayzheng 出什么题目?你要面试别人么?
      • 无颜Flower:我竟然看完了:anguished:
        zz77zz:@DaiFlower 谢谢~~~ 我日更 第二篇也快完了 刚也在写
        无颜Flower:@zz77zz 说明你很棒,值得学习:+1:
        zz77zz:我真没想过 有人会看~
      • 知识学者::joy:
        zz77zz:@东风冷雪 🤔🤔

      本文标题:每天一个js小算法(日更 21天)

      本文链接:https://www.haomeiwen.com/subject/iowjmftx.html