随笔分类 -  leetcode

力扣刷题过程中……
摘要:题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? 思路分析 回顾之前的动态规划部分的题,每一个当前状态都可以由之前的 阅读全文
posted @ 2022-10-31 10:25 含若飞 阅读(34) 评论(0) 推荐(0)
摘要:题目描述 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低花费。 样例输入 示例 1: 输入:cost = [ 阅读全文
posted @ 2022-10-29 11:26 含若飞 阅读(67) 评论(0) 推荐(0)
摘要:题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 思路 碰到这类题我们可以通过高中学的数学归纳法进行推导,可以先将前面几个结果列举出来 所求项就等于前两项之和,类似于斐波那契数列 代码示例 /** * @param {n 阅读全文
posted @ 2022-10-29 10:32 含若飞 阅读(27) 评论(0) 推荐(0)
摘要:斐波那契数列 使用暴力解法 function fib(n) { if(n<2) return n return fib(n-1) + fib(n-2) } 使用记事本的方法 我们可以使用闭包在外层函数中创建一个记事本 var fib = function(n) { //可以使用map来充当记事本,也 阅读全文
posted @ 2022-10-27 16:46 含若飞 阅读(38) 评论(0) 推荐(0)
摘要:问题描述 一般经常是以这样的形式出现的: 有30个小孩儿,编号从1-30,围成一圈依此报数,1、2、3 数到 3 的小孩儿退出这个圈, 然后下一个小孩 重新报数 1、2、3,问最后剩下的那个小孩儿的编号是多少? 或者我们可以看到约瑟夫环、击鼓传花、丢手绢 这些问题都是换汤不换药,同属于一类问题 思路 阅读全文
posted @ 2022-10-24 17:16 含若飞 阅读(78) 评论(0) 推荐(1)
摘要:题目描述 给定两个整数数组,preorder 和 postorder ,其中 preorder 是一个具有 无重复 值的二叉树的前序遍历,postorder 是同一棵树的后序遍历,重构并返回二叉树。 如果存在多个答案,您可以返回其中 任何 一个。 输入:preorder = [1,2,4,5,3,6 阅读全文
posted @ 2022-10-17 09:55 含若飞 阅读(125) 评论(0) 推荐(0)
摘要:题目描述 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] 输出: [ 阅读全文
posted @ 2022-10-17 09:02 含若飞 阅读(69) 评论(0) 推荐(0)
摘要:题目描述 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 nums 构建的 最大二叉树 。 阅读全文
posted @ 2022-10-16 10:08 含若飞 阅读(20) 评论(0) 推荐(0)
摘要:题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。 展开后的单链表应该与二叉树 先序遍历 顺序相同。 样例输入 示例 1: 输入:root = [1,2,5 阅读全文
posted @ 2022-10-15 17:50 含若飞 阅读(30) 评论(0) 推荐(0)
摘要:题目描述 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到 阅读全文
posted @ 2022-10-15 15:32 含若飞 阅读(26) 评论(0) 推荐(0)
摘要:题目描述 ##解题思路 二叉树的题一般都有对应的模板,我们做题时可以参考对应模板 二叉树解题的思维模式分两类: 1、是否可以通过遍历一遍二叉树得到答案?如果可以,用一个 traverse 函数配合外部变量来实现,这叫「遍历」的思维模式。 2、是否可以定义一个递归函数,通过子问题(子树)的答案推导出原 阅读全文
posted @ 2022-10-15 15:22 含若飞 阅读(26) 评论(0) 推荐(0)
摘要:题目描述 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 思路分析 二分查找的思路并不难,我们在生活中经常会用到二分查找,一次一次的缩小范围,最终会找到目标值。 需要注意的是边 阅读全文
posted @ 2022-10-14 21:39 含若飞 阅读(26) 评论(0) 推荐(0)
摘要:题目描述 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 思路解析 同样的可以之前的双指针法 参考代码 var moveZeroes = function(nums) { let end= rem 阅读全文
posted @ 2022-10-14 11:14 含若飞 阅读(22) 评论(0) 推荐(0)
摘要:题目说明 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 解题思路 这道题与上一道题的 阅读全文
posted @ 2022-10-14 09:55 含若飞 阅读(28) 评论(0) 推荐(0)
摘要:题目描述 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已==排序==的链表 。 示例代码 var removeDuplicates = function(nums) { if(nums.length 0) return 0; let slow=0,fas 阅读全文
posted @ 2022-10-14 09:38 含若飞 阅读(18) 评论(0) 推荐(0)
摘要:题目描述 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。 由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 阅读全文
posted @ 2022-10-14 00:36 含若飞 阅读(28) 评论(0) 推荐(0)
摘要:题目描述 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 题目解释 参考代码 const getIntersectionNode = function(headA, headB) { let p1 = he 阅读全文
posted @ 2022-10-13 22:16 含若飞 阅读(24) 评论(0) 推荐(0)
摘要:题目描述 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了 阅读全文
posted @ 2022-10-13 21:43 含若飞 阅读(24) 评论(0) 推荐(0)
摘要:题目描述 给定一个头结点为 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 样例输入 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5]) 阅读全文
posted @ 2022-10-13 21:31 含若飞 阅读(28) 评论(0) 推荐(0)
摘要:题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 样例输入 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 输入:head = [1], n = 1 输出:[] 代码参考 var removeNthFromEnd = function( 阅读全文
posted @ 2022-10-13 20:01 含若飞 阅读(26) 评论(0) 推荐(0)