笔记0518

最近做过的题,和接触的东西

CodeWars

因为基础的薄弱,登录了去年申请的CodeWars账号开始刷题。初步感受到自己的能力从极弱变成弱,也算是有进步吧。
以下的题基本都是让我记忆十分深刻的题,也几乎都是超出独立解决范围的,特此记录一下。的确我现在能感受到,如果没有系统性复习的话,做了题就和没做一样。

  1. Sum of Pairs
    给出一个整型数组 ints 和一个整数 s,在数组中找出两个和为 s 且步长最短的数并输出。
    Examples:
sum_pairs([11, 3, 7, 5],         10)
#              ^--^      3 + 7 = 10
== [3, 7]

sum_pairs([4, 3, 2, 3, 4],         6)
#          ^-----^         4 + 2 = 6, indices: 0, 2 *
#             ^-----^      3 + 3 = 6, indices: 1, 3
#                ^-----^   2 + 4 = 6, indices: 2, 4
#  * entire pair is earlier, and therefore is the correct answer
== [4, 2]

sum_pairs([0, 0, -2, 3], 2)
#  there are no pairs of values that can be added to produce 2.
== None/nil/undefined (Based on the language)

sum_pairs([10, 5, 2, 3, 7, 5],         10)
#              ^-----------^   5 + 5 = 10, indices: 1, 5
#                    ^--^      3 + 7 = 10, indices: 3, 4 *
#  * entire pair is earlier, and therefore is the correct answer
== [3, 7]

解决方案:

function sum_pairs(ints, s) {
    let seen = new Set();
    for (let i of ints) {
      if (seen.has(s - i)) return [s - i, i];
      seen.add(i);
    }
  }

使用了Set来保证步长最短以及运行时间。还可以用Object。

2.The Observed PIN
给出n位数字密码,每个数字都有可能是键盘上相邻的任何一个数字,求可能的组合。
键盘长这样:

┌───┬───┬───┐
│ 123 │
├───┼───┼───┤
│ 456 │
├───┼───┼───┤
│ 789 │
└───┼───┼───┘
    │ 0 │
    └───┘

解决方案

function getPINs(observed) {
    var template = [[0,8],[1,2,4],[2,1,3,5],[3,2,6],[4,1,5,7],[5,2,4,6,8],[6,3,5,9],[7,4,8],[8,5,0,9,7],[9,8,6]];
    var res = [];
    function func(str,step){
      if(step>=observed.length){
        res.push(str);
        return;
      }
      else{
      var obserIndex = parseInt(observed[step]);
      for(var i = 0; i<template[obserIndex].length;i++)
        func(str+template[observed[step]][i],step+1);
      }
    }
    func("",0);
    return res
  }

这个问题实际上是求排列组合,这里也用了递归的写法。

写codewars的时候很多

接触的东西

工作中或是日常中经常会通过各种渠道接触到碎片化的新知识(对我而言的新知识),说实话我并不知道该怎么把他们消化成我自己的东西。

  1. node进程保护,linux的 forever;
  2. js中的apply call;
  3. 对相对定位、绝对定位的理解;
  4. 性能优化方面:分析运行时性能
  5. 更高的CSS动画性能 或者 使用translate代替绝对定位来得到更高的动画性能,看不太懂。。。
  6. mongoDB命令(一些经常用到的):
    mongo 进入mongodb shell
    use room_show_service 查看库room_show_service
    show collections 查看所有集合名
    db.project.find() 查看集合“project”里的所有数据
    db.project.remove({}) 删除集合内所有数据
    等等
  7. react适用的可resize组件,github以及其demo地址
  8. git rebase?不是很明白。。。
  9. 最近手上两本书:《深入React技术栈》、《算法竞赛入门经典》,以及gitchat的三个电子课。。书没怎么看,电子课也没怎么吃透。。这知识不进脑子啊。。。
  10. 同事用TypeScript实现了简易的React 有空学习一下。。另外人家github上还有小程序实现wy云音乐之类的,感觉可以看看(不过这部分目前有点超出能力惹,哭)
  11. 说实话对promise then之类的真心不怎么理解。。毕设的后台代码写的层层嵌套,似乎那就是回调地狱?当时因为赶工。。没有优化(能用就行系列)。。感觉可以优化一下,另外这种情况可以用封装方法解决吗。
  12. webpack的使用至今没懂,package.json文件的设置项就是天书吧。。毕设的webpack也不是我搭建的,感觉自己真的需要从头开始一个项目。
  13. 之前某人说过想买一本linux命令大全之类的书。说实话我觉得linux的学习真的很重要,但是目前都没有用到linux的机会,目的性不够强时学习的效率真是不高。。
  14. 另外我还需要搭建一个个人博客吧,一直是待办项。。。这个同事也有做,可以学习一下。不过某人说这个必要性不是很大。那就把毕设的项目搭到服务器上吧。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值