[22].括号生成

/* * @lc app=leetcode.cn id=22 lang=javascript * * [22] 括号生成 */// @lc code=start/** * @param {number} n * @return {string[]} */// solution: 回溯 + 剪枝var generateParenthesis = function (n) {  var res = [];  var initialPath = '';  dfs(res, n, n, initialPath);  return res;  function dfs(res, left, right, path) {    if (left === 0 && right === 0) {      res.push(path);      return;    }    if (left > 0) {      dfs(res, left - 1, right, path + '(');    }    if (left < right) {      dfs(res, left, right - 1, path + ')');    }  }};

[01].两数之和

/* * @lc app=leetcode.cn id=1 lang=javascript * * [1] 两数之和 */// @lc code=start/** * @param {number[]} nums * @param {number} target * @return {number[]} */// solution 1:var twoSum = function (nums, target) {  for (var i = 1; i < nums.length; i++) {    var idx = nums.indexOf(target - nums[i]);    if (idx > -1 && idx !== i) {      return [i, idx];    }  }  return [];};//  solution 2:var twoSum = function (nums, target) {  var dic = {};  for (var i = 0; i < nums.length; i++) {    var complement = target - nums[i];    if (complement in dic) {      return [dic[complement], i];    }    dic[nums[i]] = i;  }};// @lc code=end

[40]. 最小的k个数

/** * 40. 最小的k个数 * @param {number[]} arr * @param {number} k * @return {number[]} */var getLeastNumbers = function (arr, k) {  var result = [];  var nums = arr.sort((a, b) => a - b);  for (var i = 0; i < k; i++) {    result.push(nums[i]);  }  return result;};

[49] 字母异位词分组

/* * @lc app=leetcode.cn id=49 lang=javascript * * [49] 字母异位词分组 */// @lc code=start/** * @param {string[]} strs * @return {string[][]} */// 思路: 以排序后的 str 作为 key, values 为排序后为 key 的 str 集合.var groupAnagrams = function (strs) {  const map = new Map();  for (var i = 0; i < strs.length; i++) {    const sortedStr = strs[i].split('').sort().join();    if (map.has(sortedStr)) {      let temp = map.get(sortedStr);      temp.push(strs[i]);      map.set(sortedStr, temp);    } else {      map.set(sortedStr, [strs[i]]);    }  }  return [...map.values()];};// @lc code=end

[94] 二叉树的中序遍历

/* * @lc app=leetcode.cn id=94 lang=javascript * * [94] 二叉树的中序遍历 */// @lc code=start/** * Definition for a binary tree node. * function TreeNode(val) { *     this.val = val; *     this.left = this.right = null; * } *//** * @param {TreeNode} root * @return {number[]} */var inorderTraversal = function (root) {  var stack = [];  function helper(node) {    if (!node) return;    node.left && helper(node.left);    stack.push(node.val);    node.right && helper(node.right);  }  helper(root);  return stack;};// @lc code=end

[242] 有效的字母异位词

/* * @lc app=leetcode.cn id=242 lang=javascript * * [242] 有效的字母异位词 */// @lc code=start/** * @param {string} s * @param {string} t * @return {boolean} */// 方法1:var isAnagram = function (s, t) {  return s.split('').sort().join('') == t.split('').sort().join('');};// 方法2: Setvar isAnagram = function(s, t) {  if(s.length !== t.length) return false;    var ary = new Array(26).fill(0);  for(var i = 0; i < s.length; i++) {      ary[s[i].charCodeAt(0) - 97]++;      ary[t[i].charCodeAt(0) - 97]--;  }  for(var i = 0; i < ary.length; i++) {      if(ary[i] !== 0) return false;  }  return true};// @lc code=end

[347] 前 K 个高频元素

/* * @lc app=leetcode.cn id=347 lang=javascript * * [347] 前 K 个高频元素 */// @lc code=start/** * @param {number[]} nums * @param {number} k * @return {number[]} */// 解法: 优先队列, 大顶堆var topKFrequent = function (nums, k) {  var map = new Map();  var list = [];  var result = [];  for (var i = 0; i < nums.length; i++) {    if (map.has(nums[i])) {      let count = map.get(nums[i]);      map.set(nums[i], count + 1);    } else {      map.set(nums[i], 1);    }  }  for (let [key, value] of map.entries()) {    list.push({ value, key });  }  // 降序排列  list.sort((a, b) => b.value - a.value);  for (let i = 0; i < k; i++) {    result.push(parseInt(list[i].key, 10));  }  return result;};// @lc code=end

[429] N叉树的层序遍历

/* * @lc app=leetcode.cn id=429 lang=javascript * * [429] N叉树的层序遍历 */// @lc code=start/** * // Definition for a Node. * function Node(val,children) { *    this.val = val; *    this.children = children; * }; *//** * @param {Node} root * @return {number[][]} */var levelOrder = function (root) {  var initialLevel = 0;  var stack = [];  if (!root) return [];  helper(root, initialLevel);  return stack;  function helper(node, level) {    if (stack.length === level) {      stack.push([]);    }    stack[level].push(node.val);    for (var i = 0; i < node.children.length; i++) {      helper(node.children[i], level + 1);    }  }};// @lc code=end

[589] N叉树的前序遍历

/* * @lc app=leetcode.cn id=589 lang=javascript * * [589] N叉树的前序遍历 */// @lc code=start/** * // Definition for a Node. * function Node(val, children) { *    this.val = val; *    this.children = children; * }; *//** * @param {Node} root * @return {number[]} */var preorder = function (root) {  var stack = [];  if (!root) return [];  helper(root, stack);  return stack;  function helper(node, stack) {    if (!node) return;    stack.push(node.val);    for (var i = 0; i < node.children.length; i++) {      helper(node.children[i], stack);    }  }};// @lc code=end

[590] N叉树的后序遍历

/* * @lc app=leetcode.cn id=590 lang=javascript * * [590] N叉树的后序遍历 */// @lc code=start/** * // Definition for a Node. * function Node(val,children) { *    this.val = val; *    this.children = children; * }; *//** * @param {Node} root * @return {number[]} */var postorder = function (root) {  var stack = [];  if (!root) return [];  helper(root, stack);  return stack;  function helper(node, stack) {    if (!node) return;    for (var i = 0; i < node.children.length; i++) {      helper(node.children[i], stack);    }    stack.push(node.val);  }};// @lc code=end