leetcode算法
ai酸的博文
写Bug,我是认真的。
展开
-
浅浅地学习动态规划...
在现实生活中,有一类活动的过程,由于它的特殊性,可将过程分成若干个互相联系的阶段,在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果。因此各个阶段决策的选取不能任意确定,它依赖于当前面临的状态,又影响以后的发展。对于这种问题,决策依赖当前的状态,又影响以后的发展。那么把复杂的问题分成一个个子问题,子问题解决并保存结果的求解复杂问题的方法称为动态规划。原创 2022-10-30 17:53:35 · 575 阅读 · 0 评论 -
[leetcode] 200.岛屿数量
代码 DFS /** * @param {character[][]} grid * @return {number} */ var numIslands = function(grid) { let count = 0 for(let i = 0; i < grid.length; i++) { for(let j = 0; j < grid[0].length; j++) { if(grid[i][j] === '1') {原创 2022-03-10 16:28:10 · 268 阅读 · 0 评论 -
[leetcode] 1539. 第 k 个缺失的正整数
代码 法一:枚举法 将正确的数组与实际的数组比较,易得实际数组arr[i]大于真实数组p。 arr[i] > p时,说明存在缺失的整数,此时p++,并记录当前缺失的元素p。等待相逢。 arr[i] === p时,说明此arr[i]不是缺失的整数。 当缺失的元素p的个数达到k时,结束循环。 /** * @param {number[]} arr * @param {number} k * @return {number} */ var findKthPositive = function(a原创 2022-03-08 12:00:45 · 217 阅读 · 0 评论 -
[leetcode] 198.打家劫舍
代码 /** * @param {number[]} nums * @return {number} */ var rob = function(nums) { // F(num) = Math.max(F(num - 1), F(num -2) + A(num)) // 特殊情况 if(nums.length <= 2) { return Math.max(nums[0], nums[1] || 0) } // 遍历 let re原创 2022-03-07 16:42:03 · 191 阅读 · 0 评论 -
[leetcode] 76. 最小覆盖子串
代码 第一次 /** * @param {string} s * @param {string} t * @return {string} */ var minWindow = function(s, t) { let l = 0 let r = 0 let isRight = true let maxStr = '' let maxNum = 0 const tMapInitial = new Map() const tMap = new M原创 2022-03-04 23:45:47 · 224 阅读 · 0 评论 -
[leetcode] 3. 无重复字符的最长子串
代码 方法一 /** * @param {string} s * @return {number} */ var lengthOfLongestSubstring = function(s) { let maxLength = 0 for(let i = 0; i < s.length; i++) { let box = new Set() let boxMaxLength = 0 for(let j = i; j < s.l原创 2022-03-03 11:50:45 · 416 阅读 · 0 评论 -
[leetcode] 1.两数之和
代码 第一次 /** * @param {number[]} nums * @param {number} target * @return {number[]} */ var twoSum = function(nums, target) { const map = new Map() for(let i = 0; i < nums.length; i++) { // 登记 map.set(nums[i], i) // 边登记边找媳妇原创 2022-03-02 21:37:08 · 105 阅读 · 0 评论 -
[leetcode] 21. 合并两个有序链表
代码 方法一:规规矩矩 /** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } */ /** * @param {ListNode} list1 * @param {ListNode} list2 *原创 2022-03-01 23:00:51 · 60 阅读 · 0 评论 -
[leetcode] 349. 两个数组的交集
代码 第一次 /** * @param {number[]} nums1 * @param {number[]} nums2 * @return {number[]} */ var intersection = function(nums1, nums2) { return [...new Set( [...new Set(nums1)].filter( item => nums2.includes(item) )原创 2022-03-01 17:30:03 · 124 阅读 · 0 评论 -
[leetcode] 141. 环形链表
代码 方法一:快跑与慢跑 现实中,跑步很快的人与跑步很慢的人在同时同一起点出发,跑的快的人一定会比跑的慢的人快一圈,此算法就是模拟这个场景。 /** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } */ /** * @param {ListNode} head * @return {boolean} */ va原创 2022-02-28 14:51:56 · 125 阅读 · 0 评论 -
[leetcode] 83.删除排序链表中的重复元素
代码 第一次 /** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } */ /** * le83 * @param {ListNode} head * @return {ListNode} */ v原创 2022-02-28 10:58:54 · 177 阅读 · 0 评论 -
[leetcode] 2. 两数相加
/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } */ /** * @param {ListNode} l1 * @param {ListNode} l2 * @return {ListNode}原创 2022-02-27 16:59:15 · 241 阅读 · 0 评论 -
[leetcode] 206.反转链表
代码 /** * @param {ListNode} head * @return {ListNode} */ var reverseList = function (head) { let p1 = head; let p2 = null; while(p1) { const tmp = p1.next // 保存p1.next p1.next = p2 p2 = p1 p1 = tmp }原创 2022-02-24 18:01:48 · 237 阅读 · 0 评论 -
[leetcode] 933 最近的请求次数
leetcode 993 最近的请求次数原创 2022-02-23 21:19:43 · 177 阅读 · 0 评论 -
[leetcode] 20. 有效的括号
/** * LeetCode 20 * @param {string} s * @return {boolean} */ var isValid = function (s) { // 字符串长度为奇数 if (s.length % 2 === 1) { return false } let stack = [] // 初始化左边括号 const leftBracket = ['(', '[', '{'] for (let i原创 2022-02-22 22:28:39 · 194 阅读 · 0 评论