自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

叽里呱啦大王的博客

非科班数学转码算法小白成长ing

  • 博客(42)
  • 收藏
  • 关注

原创 代码随想录算法训练营Day41 | Leetcode739. 每日温度、496.下一个更大元素 I、503.下一个更大元素II

对于每个 0 <= i < nums1.length ,找出满足 nums1[i] == nums2[j] 的下标 j ,并且在 nums2 确定 nums2[j] 的。给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的。是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。的数组 nums1 和 nums2 ,下标从 0 开始计数,其中nums1 是 nums2 的子集。

2025-05-05 08:00:00 933

原创 代码随想录算法训练营Day42 | Leetcode42. 接雨水、84.柱状图中最大的矩形

使用单调栈,也是通过 长 * 宽 来计算雨水面积的,长就是通过柱子的高度来计算,宽是通过柱子之间的下标来计算,栈里只需存放下标就行,想要知道对应的高度,通过 height[stack.top()] 就可以知道弹出的下标对应的高度了。解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输入:heights = [2,1,5,6,2,3]

2025-05-05 08:00:00 551

原创 代码随想录算法训练营Day40 | Leetcode 647. 回文子串、516.最长回文子序列

从递推公式:dp[i][j] = dp[i + 1][j - 1] + 2 可以看出递推公式是计算到 i 和 j 相同时候的情况,所以需要初始化 dp[i][i]。其他情况 dp[i][j] 初始为 0 ,这样递推公式:dp[i][j] = max(dp[i + 1][j], dp[i][j - 1]) 中 dp[i][j] 才不会被初始值覆盖。:dp[i][j] 表示字符串 s 在 [i, j] 范围内最长的回文子序列的长度为 dp[i][j]。是字符串中的由连续字符组成的一个序列。

2025-05-04 19:46:55 693

原创 代码随想录算法训练营Day39 | Leetcode 115.不同的子序列、583.两个字符串的删除操作、72.编辑距离

dp[i][0] 表示 word2 为空字符串,以 i-1 为结尾的字符串 word1 要删除多少个元素才能和 word2 相同,易知 dp[i][0] = i,dp[0][j] 同理。当 s[i - 1] 与 t[j - 1] 不相等时,dp[i][j] 只由一部分组成,不用 s[i - 1] 来匹配(相当于在 s 中删除这个元素),即:dp[i - 1][j]。:dp[i][0] 表示以下标 i-1 为结尾的字符串 word1 和空字符串 word2 的最近编辑距离为 dp[i][0]。

2025-05-04 18:54:11 1249

原创 代码随想录算法训练营Day38 | Leetcode1143.最长公共子序列、1035.不相交的线、53.最大子序和、392.判断子序列

字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。是这两个字符串所共同拥有的子序列。

2025-04-25 17:03:00 932

原创 # 代码随想录算法训练营Day37 | Leetcode300.最长递增子序列、674.最长连续递增序列、718.最长重复子数组

可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], …, nums[r - 1], nums[r]] 就是连续递增子序列。是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。、长度最长的子数组的长度。

2025-04-24 21:18:18 1344

原创 代码随想录算法训练营Day36 | Leetcode188.买卖股票的最佳时机IV、309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费

给你一个整数数组 prices 和一个整数 k ,其中 prices[i] 是某支给定的股票在第 i 天的价格。你最多可以完成 k 笔交易。唯一差别在于递推公式部分,dp 数组的含义为dp[i][0] 表示第 i 天持有股票所得最多现金, dp[i][1] 表示第 i 天不持有股票所得最多现金。dp[i][1] 表示的是第 i 天,买入股票的状态,但并不是说一定要第 i 天买入股票。同理可以推出 dp[0][j] 当 j 为奇数的时候都初始化为 -prices[0], 当 j 为偶数的时候都初始化为 0。

2025-04-22 21:42:09 919

原创 代码随想录算法训练营Day35 | Leetcode121. 买卖股票的最佳时机、122.买卖股票的最佳时机II、123.买卖股票的最佳时机III

由递推公式可以看出其基础都是要从 dp[0][0] 和 dp[0][1] 推导出来,那么 dp[0][0] 表示第 0 天持有股票,此时的持有股票就一定是买入股票了,因为不可能有前一天推出来,所以 dp[0][0] -= prices[0];dp[0][1]表示第 0 天不持有股票,不持有股票那么现金就是 0,所以 dp[0][1] = 0。那么 dp[i][1] 一定是选最大的,所以 dp[i][1] = max(dp[i-1][0] - prices[i], dp[i - 1][1])。

2025-04-21 21:31:25 860

原创 代码随想录算法训练营Day34 | Leetcode198.打家劫舍、213.打家劫舍II、337.打家劫舍III

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。

2025-04-21 20:45:55 987

原创 代码随想录算法训练营Day33 | Leetcode322. 零钱兑换、279.完全平方数、139.单词拆分 、多重背包(卡码网56. 携带矿石资源)

在这个行星上,有许多不同类型的矿石资源,每种矿石都有不同的重要性和价值。你需要选择哪些矿石带回地球,但你的宇航舱有一定的容量限制。现在有 N 种不同类型的矿石,每种矿石有一个重量 w[i],一个价值 v[i],以及最多 k[i] 个可用。输入共包括四行,第一行包含两个整数 C 和 N,分别表示宇航舱的容量和矿石的种类数量。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。给你一个整数 n ,返回 和为 n 的完全平方数的最少数量。第二行包含 N 个整数,表示 N 种矿石的重量。

2025-04-18 14:13:12 1061

原创 代码随想录算法训练营Day32 | 完全背包问题(卡码网52. 携带研究材料)、Leetcode518. 零钱兑换 II、377. 组合总和 Ⅳ、卡码网70. 爬楼梯

在 01背包问题中,背包先空留出物品 1 的容量,此时容量为 1,只考虑放物品 0 的最大价值是 dp[0][1],因为 01 背包每个物品只有一个,既然空出物品 1,那背包中也不会再有物品 1。放物品 i:背包空出物品 i 的容量后,背包容量为 j - weight[i],dp[i][j - weight[i]] 为背包容量为 j - weight[i] 且不放物品 i 的最大价值,那么 dp[i][j - weight[i]] + value[i] ,就是背包放物品 i 得到的最大价值。

2025-04-17 15:35:26 1233

原创 代码随想录算法训练营Day31 | Leetcode1049. 最后一块石头的重量 II、494. 目标和、474.一和零

有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。如果 x == y,那么两块石头都会被完全粉碎;如果 x!= y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就返回 0。

2025-04-16 21:49:21 1086

原创 代码随想录算法训练营Day30 | 01背包问题(卡码网46. 携带研究材料)、Leetcode416.分割等和子集

确定 dp 数组以及下标的含义:需要两个维度 i ,j 分别表示物品和背包容量。dp[i][j] 表示从下标为 [0-i] 的物品里任意取,放进容量为 j 的背包,价值总和最大是多少。把物品 0 与物品 1 放入背包的情况:确定递推公式:以 dp[1][4] 的状态为例,求取 dp[1][4] 有两种情况:dp 数组如何初始化:首先,从 dp[i][j] 的定义出发,如果背包容量 j 为0的话,即 dp[i][0],无论是选取哪些物品,背包价值总和一定为 0。其次, dp[0][j] 即:存放编号 0

2025-04-15 14:33:46 1077

原创 代码随想录算法训练营Day29 | Leetcode 62.不同路径、63. 不同路径 II、343.整数拆分、96.不同的二叉搜索树

则从1遍历 j,比较 (i - j) * j 和 dp[i - j] * j 取最大的。递推公式为 dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j)),也可以理解为 j * (i - j) 是单纯的把整数拆分为两个数相乘,而 j * dp[i - j] 是拆分成两个以及两个以上的个数相乘。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。(即 grid[m - 1][n - 1])。(即 grid[0][0])。

2025-04-14 17:07:06 1018

原创 代码随想录算法训练营Day28 | Leetcode 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

由递归公式,只初始化 dp[0] 和 dp[1] 就够了,其他的最终都是 dp[0] 与 dp[1] 推出。不考虑 dp[0] 如何初始化,只初始化 dp[1] = 1,dp[2] = 2,然后从 i = 3 开始递推,这样才符合 dp[i] 的定义。为了所费体力最小,选择从 dp[i - 1] 和 dp[i - 2] 跳至 dp[i] 耗费少的,即 dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2])。需要 n 阶你才能到达楼顶。

2025-04-12 15:39:35 1110

原创 代码随想录算法训练营Day27 | Leetcode 56. 合并区间、738.单调递增的数字、968.监控二叉树

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是。给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈。说明: N 是在 [0, 10^9] 范围内的一个整数。给定一个二叉树,我们在树的节点上安装摄像头。计算监控树的所有节点所需的最小摄像头数量。

2025-04-11 17:00:11 1001

原创 代码随想录算法训练营Day26 | Leetcode 452. 用最少数量的箭引爆气球、435. 无重叠区间、763.划分字母区间

例如,字符串 “ababcc” 能够被分为 [“abab”, “cc”],但类似 [“aba”, “bcc”] 或 [“ab”, “ab”, “cc”] 的划分是非法的。非常像,弓箭的数量就相当于是非交叉区间的数量,只要把弓箭那道题目代码里射爆气球的判断条件加个等号(认为 [0,1] [1,2] 不是相邻区间),然后用总区间数减去弓箭数量就是要移除的区间数量了。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s。例如 [1, 2] 和 [2, 3] 是不重叠的。

2025-04-10 16:46:21 842

原创 代码随想录算法训练营Day25 | Leetcode 134. 加油站、135. 分发糖果、860.柠檬水找零、406.根据身高重建队列

返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。注意,一开始你手头没有任何零钱。给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。给定两个整数数组 gas 和 cost ,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。账单是20,优先消耗一个10和一个5:因为美元10只能给账单20找零,而美元5可以给账单10和账单20找零,美元5更万能!

2025-04-10 08:00:00 1281

原创 代码随想录算法训练营Day24 | Leetcode 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II、1005.K次取反后最大化的数组和

每个元素 nums[i] 表示从索引 i 向后跳转的最大长度。给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。判断你是否能够到达最后一个下标,如果可以,返回 true;给定一个长度为 n 的 0 索引整数数组 nums。在每一天,你可以决定是否购买和/或出售股票。数组中的每个元素代表你在该位置可以跳跃的最大长度。给你一个非负整数数组 nums ,你最初位于数组的。生成的测试用例可以到达 nums[n - 1]。说明: 假设你总是可以到达数组的最后一个位置。

2025-04-09 20:36:47 954

原创 代码随想录算法训练营Day23 | Leetcode 455分发饼干、376摆动序列、53最大子序和

对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j]。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是满足尽可能多的孩子,并输出这个最大数值。给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。假设你是一位很棒的家长,想要给你的孩子们一些小饼干。可以通过从原始序列中删除一些(也可以不删除)元素来获得,剩下的元素保持其原始顺序。

2025-04-09 19:47:20 862

原创 代码随想录算法训练营Day22 | Leetcode 491递增子序列、46全排列、47全排列 II

给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。的数组 nums ,返回其 所有可能的全排列。的序列 nums ,按任意顺序。回溯(利用 set 去重)回溯(使用 used)

2025-04-08 16:23:39 1005

原创 代码随想录算法训练营Day21 | Leetcode 93复原IP地址、78子集、90子集II

正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的 子集(幂集)。如果把 子集问题、组合问题、分割问题都抽象为一棵树的话,那么组合问题和分割问题都是。给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的。,这些地址可以通过在 s 中插入 ‘.’ 来形成。给你一个整数数组 nums ,数组中的元素。返回的解集中,子集可以按。返回该数组所有可能的子集(幂集)。

2025-04-06 11:48:51 986

原创 代码随想录算法训练营Day20 | Leetcode 39组合总和、40组合总和II、131分割回文串

给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。:可以使用双指针法,一个指针从前向后,一个指针从后向前,如果前后指针所指向的元素是相等的,就是回文字符串了。解集不能包含重复的组合。如果至少一个数字的被选数量不同,则两种组合是不同的。

2025-04-05 16:30:48 1115

原创 代码随想录算法训练营Day19 | Leetcode 77组合、216组合总和III、17电话号码的字母组合

给你一个字符串 s,请你将 s 分割成一些 子串,使每个子串都是 回文串。返回 s 所有可能的分割方案。每次从集合中选取元素,可选择的范围随着选择的进行而收缩,调整可选择的范围。返回 所有可能的有效组合的列表。该列表不能包含相同的组合两次,组合可以以任何顺序返回。给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。图中每次搜索到了叶子节点,我们就找到了一个结果。

2025-04-03 23:47:04 499

原创 代码随想录算法训练营Day18 | Leetcode 669修剪二叉搜索树、108将有序数组转换为二叉搜索树、538把二叉搜索树转换为累加树

给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中。改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。node.val 的值之和。

2025-04-02 16:03:32 869

原创 代码随想录算法训练营Day17 | Leetcode 235二叉搜索树的最近公共祖先、701二叉搜索树中的插入操作、450删除二叉搜索树中的节点

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。:终止条件就是找到遍历的节点为null的时候,就是要插入节点的位置了,并把插入的节点返回。

2025-04-01 15:31:20 1124

原创 代码随想录算法训练营Day16 | Leetcode 530二叉搜索树的最小绝对差、501二叉搜索树中的众数、236二叉树的最近公共祖先

给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(的根节点 root ,返回 树中任意两不同节点值之间的最小差值。进阶:你可以不使用额外的空间吗?(假设由递归产生的隐式调用栈的开销不被计算在内)给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。提示:树中至少有 2 个节点。

2025-03-30 19:16:04 1279

原创 代码随想录算法训练营Day15 | Leetcode 654最大二叉树、617合并二叉树、700二叉搜索树中的搜索、98验证二叉搜索树

给你两棵二叉树: root1 和 root2。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。返回合并后的二叉树。你需要在 BST 中找到节点值等于 val 的节点。返回以该节点为根的子树。给定一个不重复的整数数组 nums。给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。给定二叉搜索树(BST)的根节点 root 和一个整数值 val。返回 nums 构建的 最大二叉树。

2025-03-28 21:39:23 1313

原创 代码随想录算法训练营Day14 | Leetcode 513找树左下角的值、路径总和、 从中序与(前)后序遍历序列构造二叉树

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum。给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的。给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的。那么 tree1 和 tree2 的前序和后序完全相同,但这是两棵不同的树。tree1 的前序遍历是[1 2 3], 后序遍历是[3 2 1]。tree2 的前序遍历是[1 2 3], 后序遍历是[3 2 1]。,请构造二叉树并返回其根节点。

2025-03-27 22:00:33 1477

原创 代码随想录算法训练营Day13 | Leetcode 110平衡二叉树、257二叉树的所有路径、404左叶子之和、222完全二叉树的节点个数(递归解法)

在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。平时我们解二叉树的题目时,已经习惯了通过节点的左右孩子判断本节点的属性,而本题我们要通过节点的父节点判断本节点的属性。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。给定一个二叉树,判断它是否是高度平衡的二叉树。给出一个完全二叉树,求出该树的节点个数。,返回所有从根节点到叶子节点的路径。说明:叶子节点 是指没有子节点的节点。

2025-03-26 21:07:56 837

原创 代码随想录算法训练营Day12 | Leetcode 226翻转二叉树、101对称二叉树、104二叉树的最大深度、111二叉树的最小深度

要比较的是根节点的两个子树是否是相互翻转的,进而判断这个树是不是对称树,所以要比较的是两个树,参数自然也是左子树节点和右子树节点。返回值自然是 bool 类型。给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。给你一个二叉树的根节点 root , 检查它是否轴对称。给定一个二叉树 root ,返回其最大深度。是指从根节点到最远叶子节点的最长路径上的节点数。是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。给定一个二叉树,找出其最小深度。

2025-03-26 10:02:03 887

原创 代码随想录算法训练营Day11 | 二叉树的递归遍历、迭代遍历、统一迭代法、层序遍历

层序遍历的时候,判断是否遍历到单层的最后面的元素,如果是,就放进 result 数组中,随后返回 result 就可以了。依然采用层序遍历,只不过在单层遍历的时候需要记录一下本层的头部节点,然后在遍历的时候让前一个节点指向本节点。给你二叉树的根节点 root ,返回其节点值的 层序遍历(即逐层地,从左到右访问所有节点)。root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。(即从左到右,逐层遍历)。在二叉树中,一层一层的来遍历二叉树,记录一下遍历的层数就是二叉树的深度。

2025-03-24 20:53:20 1258

原创 代码随想录算法训练营Day10 | Leetcode 150逆波兰表达式求值、239滑动窗口最大值、 347前 K 个高频元素

给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。返回一个表示表达式值的整数。逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。给你一个字符串数组 tokens ,表示一个根据。

2025-03-23 21:11:45 1434

原创 代码随想录算法训练营Day9 | Leetcode 232用栈实现队列、225用队列实现栈、20有效的括号、1047删除字符串中的所有相邻重复项

是一种遵循先入后出逻辑的线性数据结构,一般使用来实现,底层是动态数组,适合末尾高效操作。

2025-03-22 10:01:03 917

原创 代码随想录算法训练营Day8 | Leetcode 151翻转字符串里的单词、卡码网:55右旋转字符串

字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。例如,对于输入字符串 “abcdefg” 和整数 2,函数应该将其转换为 “fgabcde”。给你一个字符串 s ,请你反转字符串中单词的顺序。整体反转 + 逐词反转。

2025-03-20 21:35:06 230

原创 代码随想录算法训练营Day7 | Leetcode 344反转字符串、541反转字符串II、卡码网:54替换数字

编写一个函数,其作用是将输入的字符串反转过来。不要给另外的数组分配额外的空间,你必须。给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为 number。给定一个字符串 s 和一个整数 k,从字符串开头算起, 每计数至 2k 个字符,就反转这 2k 个字符中的前 k 个字符。例如,对于输入字符串 “a1b2c3”,函数应该将其转换为 “anumberbnumbercnumber”。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。

2025-03-19 13:56:46 965

原创 代码随想录算法训练营Day6 | Leetcode 454四数相加II、383赎金信、15三数之和、18四数之和

Leetcode454四数相加II、383赎金信、15三数之和、18四数之和解题思路与技巧、代码

2025-03-18 17:16:18 717

原创 代码随想录算法训练营Day5 | Leetcode 242有效的字母异位词 、349两个数组的交集、202快乐数、1两数之和

快乐数」 定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。示例 1: 输入: s = “anagram”, t = “nagaram” 输出: true。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出。如果这个过程 结果为 1,那么这个数就是快乐数。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。编写一个算法来判断一个数 n 是不是快乐数。

2025-03-17 22:19:45 1055

原创 代码随想录算法训练营Day4 | Leetcode 24两两交换链表中的节点 、19删除链表的倒数第N个节点 、 142环形链表II、 面试题 02.07. 链表相交

Leetcode 24两两交换链表中的节点 、19删除链表的倒数第N个节点 、 142环形链表II、 面试题 02.07. 链表相交的思路细节及复杂度分析

2025-03-17 15:02:39 1113

原创 代码随想录算法训练营Day3 | Leetcode 203移除链表元素、707设计链表、206反转链表

void addAtIndex(int index, int val) 将一个值为 val 的节点插入到链表中下标为 index 的节点之前。在插入完成后,新节点会成为链表的第一个节点。给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回。int get(int index) 获取链表中下标为 index 的节点的值。void addAtTail(int val) 将一个值为 val 的节点追加到链表中作为链表的最后一个元素。

2025-03-15 11:09:59 734

空空如也

空空如也

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

TA关注的人

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