【JavaScript】Leetcode每日一题-最大整除子集 【题目描述】 给你一个由 无重复 正整数组成的集合 nums ,请你找出并返回其中最大的整除子集 answer ,子集中每一元素对(answer[i], answer[j])都应当满足: answer[i] % answer[j] == 0 ,或 answer[j] % answer[i] == 0 如果存在多个有效解子集,返回其中任何一个均可。 示例1: 输入:nums = [1,2,3] 输出:[1,2] 解释:[1,3] 也会被视为正确答案。示例2: 输入:nums = [1,2,4,8...
解题来源:人人都能看得懂的Leetcode力扣刷题教程合集(最后更新:695 .岛屿的最大面积)https://www.bilibili.com/video/BV1wA411b7qZ 语言:JavaScript 边刷题边记录【持续更新】 题目目录 3. 无重复字符的最长子串题目思路代码 4. 寻找两个正序数组的中位数题目思路 5. 最长回文子串题目思路代码 15. 三数之和题目思路代码 19. 删除链表的倒数第 N 个结点题目思路代码 20. 有效的括号题目思路代码 21. 合并两个有序链表题目思路...
原题链接:https://leetcode-cn.com/problems/serialize-and-deserialize-binary-tree/ 解题思路: 参考了『手画图解』剖析DFS、BFS解法 | 二叉树的序列化与反序列化。该题实际上并没有严格的要求将二叉树序列化为[1,2,3,null,null,4,5]的形式,只要能够输出为1,2,X,X,3,4,X,X,5,X,X(X表示节点为null),并且重新反序列化为二叉树即可。序列化: 使用BFS遍历每个节点,将遍历到的值都存在数组serialized中。如果遇到节点为空,则将...
原题链接:https://leetcode-cn.com/problems/serialize-and-deserialize-binary-tree/ 解题思路: 参考了『手画图解』剖析DFS、BFS解法 | 二叉树的序列化与反序列化。该题实际上并没有严格的要求将二叉树序列化为[1,2,3,null,null,4,5]的形式,只要能够输出为1,2,X,X,3,4,X,X,5,X,X(X表示节点为null),并且重新反序列化为二叉树即可。序列化: 使用DFS遍历每个节点。如果遇到节点为空,则返回X。如果节点有值,则将其和左右子树...
原题连接:https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ 解题思路: 参考了Simple O(n) without map。我们可以用如下代码,打印出递归经过的所有路径: var buildTree = function (preorder, inorder) {let preorderIndex = 0;let inorderIndex = 0;let preMap = new Map();let preRealMap = new Map();function build(direction, stop) {const item = {inorderIndex, stop: ino...
前言: 两数之和 知识:散列表(哈希表) 难度: 简单题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]我的答案 var twoSum = function(nums, target) {const map = {};f...
题目: LeetCode题目链接 题目截图:解题步骤: 1.对根节点的左子树进行中序遍历 2.访问根节点 3.对根节点的右子树进行中序遍历代码: /*** Definition for a binary tree node.* function TreeNode(val, left, right) {* this.val = (val===undefined ? 0 : val)* this.left = (left===undefined ? null : left)* this.right = (right===undefined ? null : right)* }*/ /*** @param {TreeNode} root* @return {numbe...
题目: LeetCode题目链接 题目截图:解题步骤: 1.遍历链表,如果发现当前元素和下个元素值相同,就删除下个元素值 2.遍历结束后,返回原链表的头部代码: /*** Definition for singly-linked list.* function ListNode(val) {* this.val = val;* this.next = null;* }*/ /*** @param {ListNode} head* @return {ListNode}*/ var deleteDuplicates = function(head) {let p = head;while (p && p.next) {if (p.val === p.n...
题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次,找出那个只出现一次的元素。 方法1:(暴力法) 若元素最后一次出现时的下标和第一次出现时的下标相同,说明该元素只出现一次。 执行结果方法2:(使用异或运算)执行结果
原题链接:https://leetcode-cn.com/problems/word-ladder/ 解题思路: 使用队列进行遍历,队列中按顺序存储了每一层的元素。每次循环时,将队列中当前层的元素依次取出,然后在wordList中查找只变化一次的单词,将其作为下一层遍历的元素,再放入队列中。将wordList中的元素都存储在Set中,每个被使用过的单词都从Set中删除,避免重复查询。由于BFS是逐层进行遍历,一旦遇到单词与目标单词相等,即为找到了最小变化次数,可以退出...
给定一个整数数组,判断是否存在重复元素。 如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。 示例 1: 输入: [1,2,3,1] 输出: true 示例 2:输入: [1,2,3,4] 输出: false 示例 3:输入: [1,1,1,3,3,4,3,2,4,2] 输出: true想法:一开始想的是最原始的做法,桶排序相似,将每个元素放在桶里面,最后直接去查看是否有两个元素挤在了一个桶里面,有 则输出true【注意题目要求呀!!至少两...
题链接:https://leetcode-cn.com/problems/gas-station/题描述:解题思路: 遍历数组,在每一个位置上模拟行驶,因为答案唯一,所以成功一次就直接返回。代码实现: /*** @param {number[]} gas* @param {number[]} cost* @return {number}*/ var canCompleteCircuit = function(gas, cost) {for (let i = 0; i < gas.length; i++) {let sum = gas[i];let index = i;for (let j = i + 1;; j++) {if (j >= gas.length) {j = 0;}if ...
题链接:https://leetcode-cn.com/problems/longest-common-prefix/题描述:解题思路: 从前往后遍历每个字符串的每一列,比较相同列上的字符是否相同,如果相同则遍历下一列,不相同则表示当前列前面的部分为最长公共前缀。代码实现: /*** @param {string[]} strs* @return {string}*/ var longestCommonPrefix = function(strs) {if (strs.length == 0) {return "";}let res = "";for (let i = 0; i < strs[0].length; i++) {fo...
原题链接:https://leetcode-cn.com/problems/lemonade-change/ 解题思路: 首先梳理一下题意: 零钱只有5元和10元两种。该题只关心是否足够找零,因此收入时只需要考虑收入的零钱数量即可,至于赚了多少钱无需考虑。 每次收入都对应3种可能情况,以此模拟找零过程: 收入5元,此时5元零钱数量加1。收入10元,此时10元零钱数量加1,5元零钱数量减1。收入20元,由于5元零钱更加通用,因此若有10元零钱,则找零10元和5元。若没有10元零...
本人掘金文章 LeetCode 第一天,我对自己说每天刷1-3题(纯自己解决,不白搭), 就是不知道能不能做到 ........ QAQjavascript 实现无重复字符的最长子串lengthOfLongestSubstring (s) {let str = let arr = []let target = []for (let i of s) {if (str.indexOf(i) < 0) {str += i} else {arr.push(str)str = i}}arr.push(str)// 排序arr.sort((a, b) => {return b.length - a.length})// 有几个子集长度相等的情况arr.forEach(l...