让前端飞程序员

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

2018-07-23  本文已影响70人  zz77zz

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

:"这个好简单应该可以实现" (就这么过了三个小时 一动不动 腰都快断了)
内心的自己:"你是真的好傻 这么简单的东西写这么久?"(然后开始找别人的代码,好高大上)
:"怎么别人这么牛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...🤐🤐🤐🤐🤐

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 今天估计得住这儿了
之所以留这儿 是因为项目拖了两天 客户又急
哎 小公司就是受人欺负 客户一句话 我就得加班
也怪自己白天净干些没用的 哈哈哈哈 不说了继续继续

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");
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]]);

以上题目看似很简单(实际上也很简单) 但就是实现不出来 憋半天憋一道题 心累 继续继续

function confirmEnding(str, target) { 
     return (str.substr(-target.length)==target) ? true:false;
}

confirmEnding("He has to give me a new name", "name");
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);
上一篇下一篇

猜你喜欢

热点阅读