LeetCode 每日一題(順帶吹水聊聊未來)

2021-02-28 飄飛的心靈

2020-7-20 00:35:07

寫完小冊,看到每日一題刷新了,【簡單】難度,那就順帶刷了,再順帶和小夥伴們吹吹水吧~

題目
給定一個已按照升序排列 的有序數組,
找到兩個數使得它們相加之和等於目標數。

函數應該返回這兩個下標值 index1 和 index2,
其中 index1 必須小於 index2。

說明:

返回的下標值(index1 和 index2)不是從零開始的。
你可以假設每個輸入只對應唯一的答案,
而且你不可以重複使用相同的元素。

示例:

輸入: numbers = [2, 7, 11, 15], target = 9
輸出: [1,2]
解釋: 2 與 7 之和等於目標數 9 。因此 index1 = 1, index2 = 2 。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted
著作權歸領扣網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

/**
 * @param {number[]} numbers
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(numbers, target) {

};

根據上面的已知函數,小夥伴們可以先嘗試破解本題,確定了自己的答案後再看下面代碼。

解題思路

三種解法:

暴力破解

const twoSum = (numbers, target) => {
  for (let i = 0; i < numbers.length; i++) {
    const index = numbers.indexOf(target - numbers[i], i + 1);
    if (index > -1) {
      return [i + 1, index + 1];
    }
  }
};

哈希表

const twoSum = (numbers, target) => {
  const map = new Map();
  for (let i = 0; i < numbers.length; i++) {
    if (map.has(numbers[i])) {
      return [map.get(numbers[i]) + 1, i + 1];
    }
    map.set(target - numbers[i], i);
  }
};

雙指針

const twoSum = (numbers, target) => {
  let low = 0, high = numbers.length - 1;
  while (low < high) {
    const sum = numbers[low] + numbers[high];
    if (sum === target) {
      return [low + 1, high + 1];
    } else if (sum < target) {
      low++;
    } else if (sum > target) {
      high--;
    }
  }
};

除此之外,官方題解還有二分查找,這裡就不哆嗦了~

吹水

7 月過半,這半個月總體來說趨勢不太對勁:

這給人的感覺是驚悚的:錢沒了,工作辭了,身體垮了

但是,怎麼說呢?發現我一個優點就是不會太過於糾結某件事情。

簡單思考了下,找軍師 lien 吐槽了一個多鍾,聊聊工作,聊聊生活,聊聊未來。

然後第二天就打起精神來,該工作工作,學習學習,周末拾取了該有的狀態,重新規劃自己:

工作回頭能找到更好的,身體也能變得更好,就是莫名自信~

這幾天和幾個小夥伴聊得比較多的是關於 996,和自己啥時候能買房。

996

996 的人鍛鍊時間少了,你別看平時不鍛鍊也沒什麼,你看我今年做個體檢,一身病,我還沒開始 996 呢996 學習的時間少了,如果工作內容不夠豐富,很快就會進入瓶頸區,因為你下班後或者周日,你的學習可能性會比較小(累)你的交際可能沒那麼好,如果是非常忙的 996,你一年下來認識的,可能只有你同事

買房

當然,上面都是吐槽時候的一些話,複製粘貼上來。

可能說的有點亂,不過隨便看看即可,吐槽嘛

2020-7-20 00:48:38

先這樣吧,最怕的不是裸辭,而是你明明有工作有穩定收入,但是你對自己後續日子迷茫了。

不折騰的前端,和鹹魚有什麼區別!

jsliang 會每天更新一道 LeetCode 題解,從而幫助小夥伴們夯實原生 JS 基礎,了解與學習算法與數據結構。

浪子神劍 會每天更新面試題,以面試題為驅動來帶動大家學習,堅持每天學習與思考,每天進步一點!

掃描上方二維碼,關注 jsliang 的公眾號(左)和 浪子神劍 的公眾號(右),讓我們一起折騰!

jsliang 的文檔庫 由 梁峻榮 採用 知識共享 署名-非商業性使用-相同方式共享 4.0 國際 許可協議進行許可。
基於https://github.com/LiangJunrong/document-library上的作品創作。
本許可協議授權之外的使用權限可以從 https://creativecommons.org/licenses/by-nc-sa/2.5/cn/ 處獲得。

相關焦點