筆記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. 另外我還需要搭建一個個人博客吧,一直是待辦項。。。這個同事也有做,可以學習一下。不過某人說這個必要性不是很大。那就把畢設的項目搭到服務器上吧。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章