自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【leetcode】排序问题总结

把待排序数组视为数组表示的完全二叉树,然后自底向上不断调整,使其成为一个大顶堆(升序排序)/小顶堆(降序排序),之后可以通过不断弹出堆顶元素进行排序建堆过程时间复杂度为O(n),堆排序过程时间复杂度为O(nlogn)

2024-08-02 23:11:48 265

原创 【leetcode】二叉树刷题总结(三)二叉搜索树问题

利用二叉搜索树特性,将搜索复杂度降为logn。

2024-07-28 17:35:08 369

原创 【leetcode】二叉树刷题总结(二)二叉树构造问题、最近公共祖先问题

先找到根节点,然后找到并递归构造左右子树即可:可以通过前序遍历结果找到根节点,然后根据中序遍历结果确定左右子树。通过前序后序遍历结果无法确定唯一的原始二叉树。前序遍历,迭代法实现。

2024-07-24 20:51:38 314

原创 【leetcode】栈与队列刷题tricks

需要两个栈(一个,一个)来实现队列操作在push数据的时候,只要数据放进输入栈就好。但在pop的时候,输出栈如果为空,就把输入栈数据全部导入进来,再弹出数据;如果输出栈不为空,则直接弹出数据就可以。

2024-07-09 23:04:26 318

原创 【leetcode】哈希表刷题tricks

和三数之和思路相同,四数之和的双指针解法是两层for循环nums[i] + nums[j]为确定值,然后循环内有left和right下标作为双指针,找出nums[i] + nums[j] + nums[left] + nums[right] == target的情况,四数之和的时间复杂度是O(n^3)这道题目是四个独立的数组,只要找到A[i] + B[j] + C[k] + D[l] = 0就可以,不用考虑有重复的四个元素相加等于0的情况,所以相对于四数之和简单了不少,用哈希表就可以解决。

2024-07-07 11:15:24 545

原创 【leetcode】字符串刷题tricks

模拟反转过程就可以。

2024-07-05 19:15:51 618

原创 【leetcode】数组刷题tricks

搜索区间为左闭右闭[left, right]LeetCode167题 两数之和II-输入有序数组二分查找变体-查找目标为一对数LeetCode35题 搜索插入位置二分查找变体-查找目标的插入位置LeetCode34题 在排序数组中查找元素的第一个和最后一个位置查找有序重复数组的左右边界问题,与二分查找基础题相比,主要差异在对nums[mid]==target时的情况处理 LeetCode69题 x的平方根本质是在找符合r*r

2024-07-02 12:32:29 498

原创 【leetcode】链表刷题tricks

链表的类型:单链表、双链表、循环链表链表操作中一个重要的技巧是链表操作当前节点必须要找前一个节点才能操作,这就造成了头结点的尴尬,因为头结点没有前一个节点了,每次头结点都要单独处理,使用虚拟头结点可以简化代码。

2024-06-28 09:19:10 290

原创 【leetcode】数学相关刷题tricks

如果一个人拿的时候只剩4颗石子,那么无论他怎么拿,总会剩下1~3颗石子,对手都能赢。

2024-06-23 16:59:51 723

原创 【leetcode】图论刷题tricks

深度优先搜索(dfs)是可一个方向去搜,直到遇到绝境了,搜不下去了,再换方向(换方向的过程就涉及到了回溯),所以用递归的方式来实现是最方便的。

2024-06-09 21:23:53 383

原创 【leetcode】单调栈刷题tricks

通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了,时间复杂度为O(n)。单调栈作用:就是用一个栈来记录我们遍历过的元素单调栈存放的内容:单调栈里只需要存放元素的下标i就可以了,如果需要使用对应的元素,直接通过索引就可以获取。如果求一个元素右边第一个更大元素,单调栈就是递增的(从栈头到栈底的顺序),如果求一个元素右边第一个更小元素,单调栈就是递减的(从栈头到栈底的顺序)。

2024-05-23 22:34:56 248

原创 【leetcode】动态规划刷题tricks-子序列问题

t[i-1]时,dp[i][j]=dp[i-1][j],即只删除t中的元素,不需要删除s中的元素比较。所以还可以压缩为1维DP数组。所以可维护一个数组d,d[i]表示长度为i + 1的最长递增子序列的末尾元素的最小值,不断更新d,d的最终长度就是最长自增子序列长度。如果要使递增子序列尽可能的长,需要让序列上升得尽可能慢,因此希望每次在递增子序列最后加上的那个数尽可能的小。相对“最长递增子序列”,本题简单在,每次只需要比较和前一个元素的大小。由于递推公式是从上到下、从左到右,所以无法压缩为1维DP数组。

2024-05-19 23:18:47 161

原创 【leetcode】动态规划刷题tricks-买卖股票问题

能买无数次,与“买卖股票的最佳时机II”的区别:由于有手续费,所以卖出股票时需要添加手续费。能买无数次,相对只能买1次,主要变化在dp[0]的递推公式。只能买k次,需要记录2*k个状态。

2024-05-18 12:10:56 154

原创 【leetcode】动态规划刷题tricks-打家劫舍

将环形问题转化为线性问题,分别计算不考虑首尾元素的情况。

2024-05-16 23:38:49 148

原创 【leetcode】动态规划刷题tricks-背包问题

有n件物品和一个最多能背重量为w的背包。第i件物品的重量是weight[i],得到的价值是value[i]。01背包是每件物品只能用一次;完全背包是每件物品数量无限。求解目标是将哪些物品装入背包里物品价值总和最大。

2024-05-12 21:14:22 191

原创 【leetcode】动态规划刷题tricks-基础题

动态规划(Dynamic Programming,简称DP),如果某一问题有很多重叠子问题,使用动态规划是最有效的。所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的。

2024-05-11 12:18:41 174

原创 【leetcode】贪心法刷题tricks

贪心的本质是选择每一阶段的局部最优,从而达到全局最优。例如,有一堆钞票,你可以拿走十张,如果想达到最大的金额,你要怎么拿?指定每次拿最大的,最终结果就是拿走最大数额的钱。每次拿最大的就是局部最优,最后拿走最大数额的钱就是推出全局最优。贪心算法唯一的难点就是如何通过局部最优,推出整体最优。如果手动模拟一下感觉可以局部最优推出整体最优,而且想不到反例,那么就试一试贪心。如果不可行,可能需要动态规划。将局部最优解堆叠成全局最优解。将问题分解为若干个子问题。求解每一个子问题的最优解。

2024-05-02 20:10:51 226 2

原创 【leetcode】回溯刷题总结

有递归就有回溯,递归与回溯相辅相成。回溯搜索法是纯暴力搜索算法。一般的回溯问题都可以抽象为树结构,树的深度为递归次数,树的宽度为候选集合大小。

2024-04-27 16:40:10 198

原创 【leetcode】二叉树刷题总结(一)分解思路、遍历思路

【代码】【leetcode】二叉树刷题总结。

2024-04-20 16:39:31 270

原创 【leetcode】二叉树分类、遍历方式、解题思路总结

二叉树分类二叉树分类满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。即深度为k,有2^k-1个节点的二叉树。完全二叉树:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层(h从1开始),则该层包含 1~ 2^(h-1) 个节点。二叉搜索树:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;

2024-04-17 22:39:42 239

原创 pytorch LSTM处理变长序列代码

序列数据一般长度是不固定的,所以在训练LSTM这类模型时,一个batch内的数据需要padding到相同的长度,并在训练中忽略相关影响。

2024-03-23 15:40:31 316

空空如也

空空如也

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

TA关注的人

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