自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 动态规划--01背包理论及经典例题

🗣 总结: 01 背包问题 使用一维滚动数组 先遍历物品 在遍历背包🎒 背包要从后往前遍历 这样保证物品只使用一次,而不是重复使用 遇到 将问题抽象成装满背包要多少种方法 递推公式:dp[j] += dp[j-nums[i]]再回到dp数组的含义 充满容量为0的背包 有dp[0]种方法 如果背包什么都不放是不是就是充满0的背包了呢。💡 经典题目: 一个容量为4的背包,一共有3个物品 重量weight = [1,3,4], 价值 value = [10,25,30] 背包如何背才能获得最大的价值。

2023-05-01 16:09:58 77

原创 代码随想录训练营|二叉树part06| 二叉树遍历方式(迭代版)

【代码】代码随想录训练营|二叉树part06| 二叉树遍历方式(迭代版)

2023-11-19 10:05:30 65

原创 代码随想录训练营| 二叉树part01 | 二叉树的遍历方式(递归版)

给定一个二叉树的根节点。

2023-11-12 16:31:55 75

原创 二叉树的理论基础

我来举一个典型的例子如题:相信不少同学最后一个二叉树是不是完全二叉树都中招了。

2023-11-11 21:09:53 149

原创 代码随想录训练营day13 | 栈与队列part03 | 滑动窗口最大值 && 前K个高频元素

给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。思路:首先维护一个队列,这个队列入口都储存每次滑动窗口的最大值。你能在线性时间复杂度内解决此题吗?返回滑动窗口中的最大值。

2023-11-11 20:56:42 64

原创 代码随想录训练营day11 | 栈与队列 part2 | 逆波兰表达式求值

输入: ["10", "6", "9", "3", "+", "-11", " * ", "/", " * ", "17", "+", "5", "+"]思路:定义栈,遍历数组,如果元素是数字,添加到栈,若遇到运算符则弹出两个元素进行运算,结果添加到栈中,最后取出栈内的最后一个元素。整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。每个运算对象可以是整数,也可以是另一个逆波兰表达式。根据 逆波兰表示法,求表达式的值。

2023-11-06 21:35:32 37

原创 代码随想录训练营day11 | 栈与队列 part2 | 有效的括号 && 删除字符串中的所有相邻重复项

思路:遍历字符串,如果是左括号时,则把对应的右括号放入栈中。如果是右括号时,则取出栈顶位置的元素,判断是否一致。出错的三种类型:1. 左括号没有对应的匹配选项 2.右括号没对应的匹配选项 3. 左右括号的匹配类型不一致。给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。思路:“开心消消乐”,定义一个栈,遍历字符串,如果栈内存在元素,并且等于栈顶元素则弹出,给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。

2023-11-05 18:28:58 44

原创 代码随想录训练营day10 | 栈与队列part1 | 用栈实现队列 && 用队列实现栈

思路 : 利用栈的先进后出的特性,构建两个栈来模拟队列,一个负责进栈,一个负责出栈。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(

2023-11-04 17:29:35 46

原创 代码随想录训练营day08 | 字符串 part2 | 动态口令 && 找出字符串中第一个匹配项的下标

思路:先反转前K个,再反转区间k到字符串结尾,最后一块反转达到左旋转的效果。"leeto" 没有在 "leetcode" 中出现,所以返回 -1。字符串的第一个匹配项的下标(下标从 0 开始)。某公司门禁密码使用动态口令技术。第一个匹配项的下标是 0 ,所以返回 0。"sad" 在下标 0 和 6 处匹配。请返回更新后的密码字符串。

2023-11-04 16:33:49 37

原创 代码随想录训练营day08 | 字符串 part1 | 路径加密 && 反转字符串里面的单词

现需将路径加密,加密方法为将。思路:按照 "."进行切分后用空格连接。中的分隔符替换为空格 "",请返回加密后的字符串。假定一段路径记作字符串。

2023-11-01 22:52:38 72

原创 代码随想录训练营day08 | 字符串 part1 | 反转字符串 && 反转字符串 II

思路:每次取2*k个字符串,反转前K个,先定义一个反转部分字符串的函数,遍历要反转的字符串,每次遍历2*k个字符串,反转前K个直到字符串全部遍历结束。给定一个字符串 s 和一个整数 k,从字符串开头算起, 每计数至 2k 个字符,就反转这 2k 个字符中的前 k 个字符。输入:["H","a","n","n","a","h"]输出:["h","a","n","n","a","H"]输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]输出: "bacdfeg“

2023-11-01 22:25:14 31

原创 代码随想录训练营day07 | 哈希表part2 | 三数之和 && 四数之和

示例: 给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为: [ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2] ]给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0?满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ]给定数组 nums = [-1, 0, 1, 2, -1, -4],

2023-10-31 22:51:32 34

原创 代码随想录训练营day07 | 哈希表part2 | 四数相加II && 赎金信

给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。否则返回 false。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500。给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。杂志字符串中的每个字符只能在赎金信字符串中使用一次。

2023-10-31 22:24:51 56 1

原创 代码随想录训练营day06 | 哈希表 part1 | 快乐数&&两数之和

快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。给定 nums = [2, 7, 11, 15], target = 9。因为 nums[0] + nums[1] = 2 + 7 = 9。编写一个算法来判断一个数 n 是不是快乐数。

2023-10-30 22:56:18 51

原创 代码随想录训练营day06 | 哈希表 part1 | 有效的字母异位词&& 两个数组的交集

思路:新建一个集合set,遍历数组nums1,判断遍历的元素是否在另一个数组nums2内,如果在放入新建的集合set内,最后返回set。示例 1: 输入: s = "anagram", t = "nagaram" 输出: true。思路:做一个长度为26的数组,数组的本质也是哈希表,key为数组的索引,value为数组的值。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 2: 输入: s = "rat", t = "car" 输出: false。

2023-10-30 22:35:56 49 1

原创 代码训练录训练营day04 | 链表part2 | 环形链表II

有环之后,来找环的入口,假设从头结点到环形入口节点 的节点数为x。从相遇节点 再到环形入口节点节点数为 z。判断是否有环的思路是定义快慢指针,慢指针每次移动一步,快指针每次移动两步,快慢指针如果在环内相遇则链表有环,如果没有相遇则链表无环。让index1和index2同时移动,每次移动一个节点, 那么他们相遇的地方就是 环形入口的节点。,n为fast指针在环内走了n圈才遇到slow指针, (y+z)为 一圈内节点的个数A。因为要找环形的入口,那么要求的是x,因为x表示 头结点到 环形入口节点的的距离。

2023-10-30 18:50:52 1099 1

原创 代码随想录训练营| 链表 part2 | 相交的链表

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null。注意,函数返回结果后,链表必须 保持其原始结构。题目数据 保证 整个链式结构中不存在环。

2023-10-29 19:39:01 17 1

原创 代码随想录训练营| 链表 part2 | 删除链表倒数第N个节点

双指针法,定义快慢指针指向头结点,要删除倒数第n个节点,想让fast向前移动n步,然后快慢指针同时移动,这样当fast为null时,slow指向的节点就是要删除的节点,这样只要让slow指向下个节点时,这样就删除倒数第n个节点。为了避免单独分析单个节点的情况,所以最好先定义一个虚拟头结点指向头结点,这样就避免单独分析情况。给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2], n = 1 输出:[1]

2023-10-29 19:16:14 30 1

原创 代码随想录训练营day04 | 链表part2 | 两两交换链表的节点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。点内部的值,而是需要实际的进行节点交换。你不能只是单纯的改变节。

2023-10-28 22:14:14 71 1

原创 代码随想录训练营day03 | 链表 part01 | 反转链表(经典)

思路:拿上图为例,定义一个空节点 pre,一个移动指针cur,一个存储cur下一个节点变量tmp,因为存在反转操作,所以要在反转之前把他的下个节点存起来,才能进行下一步操作。示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL。题意:反转一个单链表。

2023-10-27 23:19:49 748 1

原创 代码随想录训练营day03 | 链表 part1 | 设计链表

【代码】代码随想录训练营day03 | 链表 part1 | 设计链表。

2023-10-27 22:33:47 30 1

原创 代码随想录训练营day03 | 链表 part01 | 移除链表元素

当cur.next 的值等于要移除的元素时,就指向要移除元素的下一个节点 即 cur.next = cur.next.next。,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]示例 3: 输入:head = [7,7,7,7], val = 7 输出:[]链表的入口节点称为链表的头结点也就是head。

2023-10-27 18:09:11 45

原创 代码随想录训练营day02 | 数组 part2 | 螺旋矩阵II

输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

2023-10-26 22:43:34 48 1

原创 代码随想录训练营day02 | 数组part2 | 长度最小的子序列

给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。总结:滑动窗口就是暴力法的优化,具体的定义变量存储,基本一致,所以在理解滑动窗口的前提,还是理解暴力法,循序渐进才能更容易理解。思路: 两次遍历数组,记录每次大于目标和的子序列长度,取最小。

2023-10-26 22:02:02 180 2

原创 代码随想录训练营 day02 | 数组 part 2 | 有序数组的平方

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。在平方后,可以运用双指针进行新数组的填补的前提是做开始的数据就是非递减排序,绝对值之后所有的大数都集中在两边。:先对数组内的元素进行平方操作,然后在对数组内的元素利用双指针进行排序操作。

2023-10-26 11:11:02 41 1

原创 代码随想录训练营day01 | 数组 part1 | 移除元素

示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2: 给定 nums = [0,1,2,2,3,0,4,2], val = 2, 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。元素的顺序可以改变。

2023-10-25 23:30:29 193 1

原创 代码随想录训练营day01 | 数组 part1 | 二分查找

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。当 right = left 时 此时还应该 继续查找,不该跳出。

2023-10-25 19:55:58 199 1

原创 动态规划--完全背包理论及经典例题

例如 题目中(1,1,2)和 (1,2,1)数字相同 如果是组合数的话应该是1,排列数的话为2。

2023-05-04 20:35:47 68

原创 git clone 报错问题

【代码】git clone 报错问题。

2023-04-29 08:30:02 89 1

原创 动规规划:01背包经典例题,告别背包烦恼

链接🔗:💡 题目:给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200。

2023-04-24 16:45:58 80 1

原创 动态规划 : 01背包深度剖析

一个容量为4的背包,一共有3个物品 重量weight = [1,3,4], 价值 value = [10,25,30] 背包如何背才能获得最大的价值。二维数组 如何遍历 不影响结果 背包和物品都是从后往前遍历。

2023-04-24 13:42:04 90 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除