Toc
  1. 2020.04.01 Single Number
  2. 2020.04.02 Happy Number
  3. 2020.04.03 Maximum Subarray
  4. 2020.04.04 Move Zeroes
  5. 2020.04.05 Best Time to Buy and Sell Stock II
  6. 2020.04.06 Group Anagrams
  7. 2020.04.07 Counting Elements
  8. 2020.04.08 Middle of the Linked List
  9. 2020.04.09 Backspace String Compare
  10. 2020.04.10 Min Stack
  11. 2020.04.11 Diameter of Binary Tree
  12. 2020.04.12 Last Stone Weight
  13. 2020.04.13 Contiguous Array
  14. 2020.04.14 Perform String Shifts
  15. 2020.04.15 Product of Array Except Self
  16. 2020.04.16 Valid Parenthesis String
  17. 2020.04.20 Construct Binary Search Tree from Preorder Traversal
Toc
0 results found
FBB
30-Day LeetCoding Challenge
2020/04/07 前端 算法

前端小白,一直以来相对算法进行一些加强,正巧最近看到了 leetcode 推出的30-Day LeetCoding Challenge,虽然落下了几天的进度,好在前面的几道题以前解答过,以后也会跟着解决一道算法题。Please stick to it!

2020.04.01 Single Number

官方难度
Easy
解题思路
点击收获更多思路

2020.04.02 Happy Number

官方难度
Easy
解题思路
点击收获更多思路

2020.04.03 Maximum Subarray

官方难度
Easy
解题思路
点击收获更多思路

2020.04.04 Move Zeroes

官方难度
Easy
解题思路
点击收获更多思路

2020.04.05 Best Time to Buy and Sell Stock II

官方难度
Easy
解题思路
点击收获更多思路

2020.04.06 Group Anagrams

官方难度
Medium
解题思路
点击收获更多思路

2020.04.07 Counting Elements

题目链接
点击查看题目
大概意思:给定一个整数数组 arr,对于其中的任何一个 x,如果 x + 1 也在数组中,则计数结果加一。如果存在多个相同的 x,需要分别进行计数。
官方难度
UNKNOWN(新题目,暂时未更新到网站上)
解题思路

  • 思路一
    使用对象将存在的 val 都做标记,然后在对象中查找 val+1 是否存在
/**
 * @param {number[]} arr
 * @return {number}
 */
var countElements = function (arr) {
  const newArr = {};
  let res = 0;
  for (let val of arr) newArr[val] = 1;
  for (let val of arr) newArr[val + 1] && res++;
  return res;
};

2020.04.08 Middle of the Linked List

官方难度
Easy
解题思路
点击收获更多思路

2020.04.09 Backspace String Compare

官方难度
Easy
解题思路
点击收获更多思路

2020.04.10 Min Stack

官方难度
Easy
解题思路
点击收获更多思路

2020.04.11 Diameter of Binary Tree

官方难度
Easy
解题思路
点击收获更多思路

2020.04.12 Last Stone Weight

官方难度
Easy
解题思路
点击收获更多思路

2020.04.13 Contiguous Array

官方难度
Medium
解题思路
点击收获更多思路

2020.04.14 Perform String Shifts

官方难度
UNKNOWN(新题目,暂时未更新到网站上)
解题思路
点击查看题目
大概意思:提供一个字符串 s 和二维数组 shift,根据二维数组来计算如何移动字符。

  • 思路一
    先计算需要移动的数量,然后进行字符串操作
/**
 * @param {string} s
 * @param {number[][]} shift
 * @return {string}
 */
var stringShift = function (s, shift) {
  const amount = getAmount(shift) % s.length;
  let arr = s.split("");
  let shiftStr = arr.splice(amount).join("");
  arr.unshift(shiftStr);
  return arr.join("");
};
var getAmount = function (shift) {
  let shiftAmount = 0;
  for (const arr of shift) {
    const [dir, amount] = arr;
    shiftAmount = dir === 0 ? shiftAmount + amount : shiftAmount - amount;
  }
  return shiftAmount;
};

2020.04.15 Product of Array Except Self

官方难度
Medium
解题思路
点击收获更多思路

2020.04.16 Valid Parenthesis String

官方难度
Medium
解题思路
点击收获更多思路

2020.04.20 Construct Binary Search Tree from Preorder Traversal

官方难度
Medium
解题思路
点击收获更多思路

打赏
支付宝
微信
本文作者:FBB
版权声明:本文首发于FBB的博客,转载请注明出处!