瞭解計算機基礎真的有助於寫程式碼

CyanGlory發表於2017-10-22

最近接觸到 codewars, 可以在這兒瞭解自己的程式碼水平, 感覺自己的計算機基礎真的好菜...

擴充套件閱讀建議

  • 整個科學上網工具.
  • 和 翻譯外掛有一腿.

一道讓人情何以堪的題

找到一個整型陣列裡面, 出現次數為奇數次的那個元素, 假設只有一個.

我的程式碼是醬紫寫的:

function findOdd(A) {
  if (A.length === 1) {
    return A[0];
  }

  const map = {};

  A.forEach((v) => {
    if (String(v) in map) {
      map[v] += 1;
    } else {
      map[v] = 1;
    }
  });

  for (let prop in map) {
    if (map[prop] % 2 === 1) {
      return Number(prop);
    }
  }

  throw new Error('params invalid: should provide a number[]');
}複製程式碼

然而別人的程式碼是醬紫寫的:

const findOdd = (xs) => xs.reduce((a, b) => a ^ b);複製程式碼

使用異或來解決這個問題, 不得不服, 因為呀, 任對於任意數a, b:

a ^ b ^ b === a;複製程式碼

異或兩次就變回來了額... 所以, 多寫程式碼, 自發的去學習別人的優點, 是非常不錯的方式.

推薦

百度軟體中心, 可以下載到 google, 官方沒有 zg 版.
科學上網需要你自己解決, 提示 SSR.
google 的翻譯外掛 translate 真的幫到我不少, 有一定的英語水平, 又不是很高, 非常合適.

相關文章