代码编织梦想

day 42 动态规划part04 : 01背包问题,你该了解这些! 01背包问题,你该了解这些! 滚动数组 416. 分割等和子集-爱代码爱编程

动态规划:01背包理论基础 动态规划(Dynamic Programming,简称 DP)是解决优化问题的一种常用策略,其中“背包问题”是动态规划中最经典的问题之一。作为入门,以下几点是你需要了解的: 基本概念 问题模型:通常,背包问题是关于如何选择物品以满足某些约束(如重量限制)同时最大化或最小化某个值(如总价值)的问题。 状态:DP问题通常涉

day 39 动态规划part02 : 62.不同路径 63. 不同路径 ii-爱代码爱编程

62. 不同路径 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? 示例 1: 输入:m = 3, n = 7 输出:28 示例 2: 输入

leetcode hoot刷题记录.49. 字母异位词分组-爱代码爱编程

49. 字母异位词分组 中等 1.6K 相关企业 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [["bat"],[

day 38 动态规划part01 : 理论基础 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯-爱代码爱编程

动态规划理论基础 大家知道动规是由前一个状态推导出来的,而贪心是局部直接选最优的,对于刷题来说就够用了。 对于动态规划问题,我将拆解为如下五步曲,这五步都搞清楚了,才能说把动态规划真的掌握了! 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 动态规划常见的几种类型的题目: 背包问题

day 36 贪心算法 part05 : 435. 无重叠区间 763.划分字母区间 56. 合并区间-爱代码爱编程

56. 合并区间 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输入:intervals = [[1,3],[2,6],[8,10],[15,18]]

day 25 回溯算法part02 : 216.组合总和iii 17.电话号码的字母组合-爱代码爱编程

216. 组合总和 III 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9每个数字 最多使用一次  返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。 示例 1: 输入: k = 3, n = 7 输出: [[1,2,4]] 解释: 1 + 2 + 4 =

day 22 二叉树part08: 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点-爱代码爱编程

235. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树:  root = [6,2,

day 21 二叉树part07: 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先-爱代码爱编程

 236. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 示例 1: 输入:

day 18 二叉树part05: 513.找树左下角的值 112. 路径总和 113.路径总和ii 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树-爱代码爱编程

112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root = [5

day 16 二叉树part03: 104.二叉树的最大深度 559.n叉树的最大深度 111.二叉树的最小深度 222.完全二叉树的节点个数-爱代码爱编程

这里都用递归的方法解决 递归和迭代的区别 递归和迭代是编程中两种基本的控制结构,都是为了重复执行某段代码,但是它们之间存在一些基本的区别。 定义: 递归:递归是一种算法,其中一个函数通过在其自身内部调用自身来工作。它会不断重复相同或相似的任务,直到达到设定的条件。在递归中,函数调用自己,直到达到基本条件(也称为递归终止条件)。 迭代:

day 16 二叉树part03: 104.二叉树的最大深度 559.n叉树的最大深度 111.二叉树的最小深度 222.完全二叉树的节点个数-爱代码爱编程

这里都用递归的方法解决 递归和迭代的区别 递归和迭代是编程中两种基本的控制结构,都是为了重复执行某段代码,但是它们之间存在一些基本的区别。 定义: 递归:递归是一种算法,其中一个函数通过在其自身内部调用自身来工作。它会不断重复相同或相似的任务,直到达到设定的条件。在递归中,函数调用自己,直到达到基本条件(也称为递归终止条件)。 迭代:

day 11 栈与队列part02:20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值-爱代码爱编程

20. 有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。 示例 1: 输入:s = "()" 输出:true 示例 2:

3.无重复字符的最长子串-爱代码爱编程

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输

2.两数相加-爱代码爱编程

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 1: 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:3

1.两数之和-爱代码爱编程

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0

leetcode/java刷题----数组专题-爱代码爱编程

LeetCode/Java刷题----数组专题 文章目录 LeetCode/Java刷题----数组专题1.理论基础①声明及初始化②访问数组元素③数组拷贝④ Java数组类 java.util.Arrays⑤

day 3 链表: 203.移除链表元素, 707.设计链表, 206.反转链表-爱代码爱编程

链接基础,以及链表和数组的区别: 代码随想录 1. 链表类型:单列表,双列表,循环列表。 单列表: 双列表: 循环列表: 2. 链表的操作:删除节点,增加节点。 删除节点: 其中对于普通的节点删除,就如上图所示,直接让前一个节点的指向下一个节点即可。 但是对于头节点,应该让头节点

day 2 数组: 977. 有序数组的平方, 209. 长度最小的子数组, 59. 螺旋矩阵 ii-爱代码爱编程

977. 有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,100] 排序后,数组变为 [0,1,9,16,

合并两个排序的链表c++-爱代码爱编程

题目描述 输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。 如输入{1,3,5},{2,4,6}时,合并后的链表为{1,2,3,4,5,6},所以对应的输出为{1,2,3,4,5

反转链表c++-爱代码爱编程

描述 给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。 示例1 输 入:{1,2,3} 返回值:{3,2,1} 示例2 输 入:{