第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

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

標簽:
JavaScript

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


11:00:57
1. 检查值是否是基本boolean 并返回 true or false
Boo Who

function boo(bool) {  return typeof bool==='boolean';
}
boo(null);

16:21:05
2.数组去重 且 返回给定数组的原始顺序排序
Sorted Union

function unite(arr1, arr2, arr3) {  //类数组=>数组
  var args = Array.from(arguments)  //合并为一维数组
  var arr = args.reduce((a,c)=> a.concat(c));  // 数组去重
  return arr.filter((item,index)=>arr.indexOf(item) === index)
}
unite([1, 3, 2], [5, 2, 1, 4], [2, 1]);

8 - 8

12:02:22
今天把Fcc的中级过了,这个算法都进行了多少天了 该加快进度了 之前一直在写小程序 现在有时间了 之前废话太多 没效率 这次撸起袖子就是干

1.将字符串中的字符 &、<、>、" (双引号), 以及 ' (单引号)转换为它们对应的 HTML 实体。
Convert HTML Entities

// 简单粗暴法function convert(str) { return str.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;");
  }
convert("Dolce & Gabbana");// 这个是另一种思路 对象~~~function convert(str) {  var obj={    "&":'&amp;',    '<':'&lt;',    '>':'&gt;',    '"':'&quot;',    "'":'&apos;'
  };  var arr = str.split(" ");  var result = arr.map(function(val){    if(obj.hasOwnProperty(val)){      return obj[val];
    }else{      return val;
    }
  });  return result.join("");
}
convert("Dolce & Gabbana");

2.将字符串转换为 spinal case。Spinal case 是 all-lowercase-words-joined-by-dashes 这种形式的,也就是以连字符连接所有小写单词。
Spinal Tap Case

// 这个只能用于有空格的function spinalCase(str) {  return str.split(" ").map((item) => item.toLowerCase()).join("-") 
}
spinalCase('ThisIsSpinalTap');// 所以Fcc推荐用正则 还是用正则去写吧function spinalCase(str) {
  str = str.replace(/_/g," ")
        .replace(/([A-Z])/g," $1")
        .replace(/^\s/,"")
        .replace(/\s+/g,"-")
        .toLowerCase();  return str;
}
spinalCase('This Is Spinal Tap');

3.求小于等于给定数值的质数之和。
Sum All Primes

function sumPrimes(num) {    var sum=0;    for (var i = 2; i <= num; i++) {        var flag=true;        for(var j=2;j<i;j++){            if(i%j==0){
                flag=false;                break;
            }
        }        if(flag) sum+=i;
    }return sum
}
sumPrimes(10)

8月9日

11:34:05
1.写一个 function,它遍历数组 arr,并返回数组中第一个满足 func 返回值的元素。举个例子,如果 arr 为 [1, 2, 3],func 为 function(num) {return num === 2; },那么 find 的返回值应为 2。
Finders Keepers

// 第一种方案
  function find(arr, func) {  
    var arr_n = arr.map((item)=>{      if(func(item)){        return item;
      }
    })
    arr_n = arr_n.filter((item)=>{      return typeof(item)!='undefined'
    })    return arr_n.length === 0 ? undefined : arr_n[0];
  }

find([1, 3, 5, 8, 9, 10], function(num){ return num % 2 === 0; });//第二种方案function findElement(arr, func) {  let arr1 = arr.filter((val) => {    return func(val);
  });  return arr1.length === 0 ? undefined : arr1[0];
}

14:47:34 我卡死在这里了 想了很久(吃饭+休息+上厕所) 终于.............. 彻底没了思路 很开心 撒花(mmp) 完全归于今天状态不好 昨天没睡好 早上拉肚子等各种理由 看书 然后回来再想想 也许就想明白了 好多都不会 fuck

我有一个大胆的想法 就是每天统计自己写了多少代码 或者 不停的编程 所以我写了Bloging的突发奇想

2.规则讲述的模棱两可 什么卖队友了什么中单了 哈哈哈 直接看结果 如下
Drop it

drop([1, 2, 3, 4], function(n) {return n >= 3;}) 应该返回 [3, 4]。
drop([0, 1, 0, 1], function(n) {return n === 1;}) 应该返回 [1, 0, 1]。
drop([1, 2, 3], function(n) {return n > 0;}) 应该返回 [1, 2, 3]。
drop([1, 2, 3, 4], function(n) {return n > 5;}) 应该返回 []。
drop([1, 2, 3, 7, 4], function(n) {return n > 3;}) 应该返回 [7, 4]。
drop([1, 2, 3, 9, 2], function(n) {return n > 2;}) 应该返回 [3, 9, 2]。
// 题要是这么简单就好了 还有种情况没考虑//function drop(arr, func) {//  return arr.filter((item)=>{//    return func(item)//  })//}//drop([1, 2, 3], function(n) {return n < 3; });function drop(arr, func) {
  arr.map((item,index)=>{    if(!func(arr[index])){    return arr.splice(index,1,"nonono")
   }
  })    return arr.filter((item)=>{        return item !="nonono"
    })
}function drop(arr, func) {    try {
        arr.forEach((item, index) => {            if (func(arr[index]) === false) {
                arr.splice(index, 1, "nonono")
            } else {                throw new Error("结束循环~~~")
            }
        })
    } catch (e) {            if(e.message !=="结束循环~~~") throw e
    }    return arr.filter((item) => {        return item != "nonono"
    })
}
drop([0, 1, 0, 1], (n)=> {return n === 1})

跳出for break 但是跳出forEach 要用try catch okay了

3.对嵌套的数组进行扁平化处理。你必须考虑到不同层级的嵌套。 这个就是两套 递归继续扁平化+判断是否是数组 let's do this
Steamroller

function steamroller(arr) {  var new_arr = []  function asdf(ifarr){    if(Array.isArray(ifarr)){    return ifarr.forEach((item)=>{return asdf(item)})
    }else new_arr.push(ifarr)
  }
  asdf(arr)  return new_arr
}

steamroller([1, [2], [3, [[4]]]]);
steamroller([[["a"]], [["b"]]])

很好 我又卡住了
过了半个小时我找到解决方案 就是用闭包
阮一峰大神 闭包
这个方法得记住以后写代码就得这么用闭包 经常遇到这种结构的代码 每次都会处理很久 把内部处理数组的部分也写成函数去处理 递归也好写

4.传入二进制字符串,翻译成英语句子并返回。
parseInt 进制转换
Binary Agents

function binaryAgent(str) {        //str-> array
    str = str.split(" ");//循环做进制转换
    var new_str = str.map(function (item) {        return parseInt(item, 2);
    });    var str1 = "";// 循环 返回使用指定的Unicode值序列创建的字符串  然后拼接字符串 done
    new_str.forEach(function (item) {
        str1 += String.fromCharCode(item);
    });    return str1;
}

binaryAgent("01000001 01110010 01100101 01101110 00100111 01110100 00100000 01100010 01101111 01101110 01100110 01101001 01110010 01100101 01110011 00100000 01100110 01110101 01101110 00100001 00111111");

发现超级超级严重的问题 每题都没写注释 翻看就蛋疼了

5.完善编辑器中的every函数,如果集合(collection)中的所有对象都存在对应的属性(pre),并且属性(pre)对应的值为真。函数返回ture。反之,返回false。
Everything Be True

function every(collection,pre){//循环判断属性
  for(var i in collection){    if(!collection[i][pre]){      return false;
    }
  }  return true;
}// 用array.every()方法 所有项都为true 才返回truefunction every(collection, pre) {  // Is everyone being true?
  return collection.every(function(item,index,array){    return item[pre];
  });
}

every([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}], "sex");

这题还是好做一点 上一题花了点时间
17:56:20
6.创建两个参数之和func 如果只提供了一个参数,则返回一个函数,这个函数与原来的函数功能要一样 如果任何一个参数不是有效数字,则返回undefined
Arguments Optional

function add() {    // 类数组=> 数组
    var args = Array.prototype.slice.call(arguments);    //判断是否是number
    var result = args.every(function (item) {return Number.isFinite(item)})    if (result === false) 
        return undefined
    else if (args.length === 2)        return args[0] + args[1]    // 参数是一个但是二次执行 返回函数
    else 
        //保留参数一的值
        var first = args[0]        //返回一个函数 把第二次执行需要的参数与第一次相加
        return (b) => {            if (Number.isFinite(b)) {                return first + b;
            } else {                return undefined;
            }
        };
}

add(2)(3);

19:07:06
就这样中级算法题也完成了
这篇花的时间更久 相较于基础篇 这篇的难度要大一点 具体收获的还是翻阅百度书也好 还是有的
更多的是思考 思维方式上有了一丁点的转变 不会把东西想的那么复杂 简单化

webp

最希望看到的画面


我今天一整天时间全用来刷这6道题了 不知道是不是属于浪费时间的行为
但是有些题找了很多方法 搜索查看了很多stuff 多少应该有点用吧
把一些基本的数组方法都过了一遍 起码会比以前快那么30s 也算是进步

其实当今社会的人 不会"慢下来" 基于求成 以一种急躁的心态想完成当前所做事情 结果往往都不尽人意 所以学会慢下来 告诉自己 踏踏实实一步一步来 那些所谓2个月学会 *** 都是浮云 骗无脑人群的 自己沉下来 别去思考学习资料全不全 会不会不够 视频质量还不好学了会不会有效果 看了之后才能做评判不是么 人家说错与对那是参照他们的情况和他们的思考方式 自己呢?所以还是踏踏实实的 沉住气 加油~~~
自己之前写过一点东西 但是一直不好意思open it 就是一些片面的思考跟见解 不足以放到网上骗取吃瓜群众的眼光 多看看书在思考思考 在放出来吧

完结撒花~~~~



作者:zz77zz
链接:https://www.jianshu.com/p/15a633378071


點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消