自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 翻转二叉树的奇数层

对于这道题,我们可以用bfs遍历二叉树,用一个队列存储每层的节点,如果该层为奇数层的话,我们就用一个数组从左至右存储该层节点的数值,然后再进行翻转即可。

2023-12-15 19:44:03 183

原创 用邮票贴满网格图

对于第一个问题,我们可以使用二维前缀和解决,第二个问题我们可以使用二维差分解决。1.快速判断一定范围内是否存在被占据的格子。2.检查时,判断所有格子是否都被占据。

2023-12-14 10:53:09 181 1

原创 完全平方数(动态规划)

这个题目可以很轻松地分析出这个题是可以用动态规划解决的,因为对于每个数,它可以看做一个数和一个完全平方数的和,然后我们就可以再次对新的数处理,依次类推。这个题本质就是零钱兑换。可以用零钱兑换的思路来解决。

2023-12-13 19:46:52 98 1

原创 下一个更大元素IV

这道题要求找下一个第二大元素,我们就可以看作是找两次下一个第一大元素。找下一个第一大元素我们可用一个单调栈,那这道题我们就可以用两个单调栈。第一个单调栈我们可以轻松解决,如果遍历元素大于栈顶元素,那我们就把栈顶元素弹出,放到第二个单调栈内。不过我们可以先让遍历元素与第二个单调栈顶元素对比,对比后,如果第二个单调栈内还有元素,栈顶元素肯定比遍历元素大,而再让遍历元素与第一个单调栈顶元素作对比,如果弹出元素,则该元素比遍历元素小,那也就比第二个栈顶元素小,所以加入到第二个单调栈之后也不用担心第二个栈不单调了。

2023-12-12 19:22:42 751

原创 寻找重复数(抽屉原理)

根据题意,在1到n的数里,我们取中间一个数mid(不是大小中间,而是位置中间),然后遍历数组,观察在1到mid和mid+1到n的两个区间(不是位置区间,而是大小区间)内,哪个区间中数的数量大于mid,找到该区间,重复数就一定在该区间内。题目要求查找重复的整数,很容易想到使用「哈希表」,但是题目中要求「只用常量级 O(1)的额外空间」,该方法不符合题意;但如果使用暴力的话又很容易超时。首先,我们要先了解一个原理———抽屉原理,这个原理简单来说就是:向n个容器里放n+1个物品,一定会有一个容器里有两个物品。

2023-12-11 11:01:26 171

原创 只出现一次的数字(位运算)

通过异或的运算规则和性质可以得出,在把一堆数通过异或运算后,可以通过自反性把相同的两个数单独运算,因为两个相同的数异或后为1,所以可以把两个相同的数消去。既然这样,我们就可以知道如何通过这种方式解决题目了。虽然这道题看起来十分简单,但是做起来也不难。可以有很多种方法,不过这里我们讲一个比较特殊的方法————位运算。把是所有数组中的数异或后,相同的两个数变成1,只剩下那个单独的数,这样就求出了答案。

2023-12-07 10:40:35 15 1

原创 乘积最大子数组(动态规划)

看到这个题目,可能会感觉到两题十分的相似,不过这道题与上一道题其实有很大的不同之处,比如:上题在遍历子数组时遇到子数组和为负时就新找一个子数组,但本题就不一样了,如果子数组是负的,我们也不能就把它“放下了”,因为如果后面还有一个负的,那这个子数组的乘积又变成正的了。不过,如果子数组的乘积是负的,那么更小的负数肯定比大一些的负数更有可能成为子数组的最大乘积,因为负数越小绝对值越大。所以我们可以不光存下当前子数组的最大乘积,我们也要存一个最小乘积,这样就可以把负数的问题解决了。如上是具体代码实现和讲解。

2023-12-06 20:55:54 140 1

原创 穿越雷区(bfs)

这里我使用的广度优先搜索,不过限制条件比较特殊,是每次只能走不同符号的地方,不过也很好解决,在结构体新加一个属性就可以解决。这是对每个节点属性的创建,记录了该点的坐标以及走到该点需要的步数,还有flag记录该点的符号,便于之后进行判断。之后在队列不为空的基础上对队列首个元素依次进行分析,如果该元素的坐标就是终点坐标,我们就可以返回该坐标的步数。然后就是正常的搜索操作,不过额外加了一个判断(如下),寻找与该节点符号不同的节点,从而进行下一步搜索。bfs函数的开头,先创建一个队列,然后把起始位置存进去。

2023-12-05 11:02:36 112

原创 最大的矩形(单调栈的使用)

首先,要了解单调栈的原理和用途,才能将单调栈应用于题目之中,还不了解单调栈的可以先去学习了解一下。一般题目中需要用到寻找比某个元素更大或者更小的元素时可以用到单调栈。

2023-12-04 21:50:46 268

空空如也

空空如也

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

TA关注的人

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