自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq_43776408的博客

我喜欢当程序员,或许这只是我的兴趣而不是我的工作

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

原创 leetcode:对称二叉树

给dfs函数传的是根节点左右两个子树,直接判断两个子树相不相同即可。这个题和leetcode100题一样的。代码直接复制过来即可。

2024-07-22 11:44:10 24

原创 leetcode:同构字符串

一个元素映射一个,不能映射同一个,不能一个映射多个,全部都得有映射。如果s1某一位置处是连续相同字符,那s2该位置处也是连续相同字符。如果s1某一位置是单一字符,那s2该位置处也是单一字符。这个题当时没做出来,主要是没理解映射。foo和oof为啥不行。o也映射到这个0,不行。就是考你映射数学知识。

2024-07-19 13:46:54 116

原创 leetcode:相同的树

所以,不能通过前序遍历将其结果存到数组里,再逐一比较。一个二叉树通过前序遍历得到的数组。就是新建两个队列,逐一比较即可。

2024-07-18 15:10:45 104

原创 leetcode:爬楼梯

动态规划,第一步base case,状态转移方程,自顶向下。下面这段代码超时了,当n=45时,超时。

2024-07-17 16:17:47 133

原创 leetcode:x的平方根

2的平法也比8小,max更新,max=2。有些数字开根号为小数,没有整数,咋办?在if(num < x)里取最大值。比如1的平法比8小,max=1。那范围就是1000-9999。然后确定范围,比如x为8位。注意越界,最好用long。我的思路是先求出x的位数。

2024-07-17 14:37:45 190

原创 leetcode:二进制求和

短的那一位直接变0即可,因为0不影响相加结果。官方题解就是把二进制数转化为十进制数,相加。比如110+1,可以看成110+001。在把和重新转换为二进制数。如果一个短一个长咋办?

2024-07-17 13:29:20 98

原创 leetcode:加一

如果 digits 的末尾有若干个 9,例如 [1,2,3,9,9],那么我们只需要找出从末尾开始的第一个不为 9 的元素,即 3,将该元素加一,得到 [1,2,4,9,9]。随后将末尾的 9 全部置零,得到 [1,2,4,0,0] 并返回。如果 digits 的所有元素都是 9,例如 [9,9,9,9,9],那么答案为 [1,0,0,0,0,0]。如果 digits 的末尾没有 9,例如 [1,2,3],那么我们直接将末尾的数加一,得到 [1,2,4] 并返回;看了一个人写的,这种方法很巧妙。

2024-07-16 17:00:52 129

原创 leetcode:最后一个单词的长度

从后往前遍历,找到字符串中的最后一个字母,该字母即为最后一个单词的最后一个字母。从最后一个字母开始继续反向遍历字符串,直到遇到空格或者到达字符串的起始位置。\s意思就是匹配任何空白字符,包括不限于空格、制表符、换页符。这个题我使用正则表达式做。

2024-07-16 16:00:44 190

原创 leetcode:搜索插入位置

如果是1,2,3,5,7,8,9,target=6。比如1,2,3,5,6,7,8,target=4。所以为啥是return left?演算到最后一步left=right=2。一看到升序数组,还有logn复杂度。为啥后面是return left?演算到最后left=right=4。前面是二分法经典代码,不变。然后right=4-1=3。然后left+1=3。

2024-07-16 13:24:26 109

原创 leetcode:重复的子字符串

这时候重复两个指针中间夹的abc,为abcabcbabc,判断两个字符串是否相等。很明显从下标1开始找,下一次匹配的索引在3处,不等于s.length。将s和s拼接起来,然后在拼接后的字符串中从下标1开始找s的位置。很明显从下标1开始找,下一次匹配的索引在s.length处。如果找到的位置不等于s的长度,说明可以由某个字串重复得到。接着,右指针继续右移,直到遇到和第一个字符相同的。重复abca,为abcaabca,比较,二者相等。此时左指针指向开头a,右指针指向第二个a。所以不存在字串满足重复构成。

2024-07-15 13:59:07 190

原创 leetcode:找出字符串中第一个匹配项的下标

java是不是有字符串匹配函数?于是乎百度,查出来了indexof。哈哈,这个题我刚开始想的是双指针,后来仔细一想。

2024-07-15 12:44:19 166

原创 leetcode:有效的括号

看下面示例,就是栈做。

2024-07-14 17:05:37 97

原创 leetcode:缺失的第一个正数

对于一个长度为 N 的数组,其中没有出现的最小正整数只能在 [1,N+1] 中。当然我实际测试了,也可以把负数0改为n+2.根节点对应为0,左遍历减去1,右遍历加1。为啥第一步要把负数和0改为长度+1。这样的话具有相同值的一起输出即可。首先啊,题目说的很明白最小正整数。说明就没有对应的数字将该位置改。这种标记法之前好像遇到过。如果该位数字一直是正数。那么肯定缺失该位置的数。在二叉树的垂直遍历那。所以负数和0就不参与。

2024-07-14 13:51:28 185

原创 leetcode:大于等于顺序前缀和的最小缺失整数

题目要求的是求出:返回 nums 中没有出现过的 最小 整数 x ,满足 x 大于等于 最长 顺序前缀的和。后面的789就不算,只算123,当时看题速度快,导致做了半天没做出来。也就是说找出一个数比sum大,且表里不能包含sum。他说的是前缀和,意思就是只有从开头开始的。需要用到哈希表,用于快速查值是否存在。这个题我当时看懂题了,但没完全看懂。用前缀和和数组最大值相比,分类讨论。比如1,2,3,1,7,8,9。先求出前缀和,然后就是逐一判断。直接判断表里有没有包含即可。

2024-07-13 16:12:09 98

原创 leetcode:最长公共前缀

就是逐一判断,依次遍历字符串数组中的每个字符串,对于每个遍历到的字符串,更新最长公共前缀,当遍历完所有的字符串以后,即可得到字符串数组中的最长公共前缀。还傻乎乎的用node.children[ch-‘a’]差距就是我没想到可以用索引表示位置。看了下答案有人用前缀树做出来了。我一开始用前缀树没做出来。这题还可以用其他方法。

2024-07-11 15:29:17 181

原创 leetcode:找到数组的中间位置

leetcode有这样一样的题两道。

2024-07-10 13:58:45 189

原创 leetcode:寻找数组的中心下标

【代码】leetcode:寻找数组的中心下标。

2024-07-10 13:56:19 190 1

原创 leetcode:整数转罗马数字

这里我用到了平衡二叉树。

2024-07-08 15:22:05 204

原创 TreeMap用法

ceilingKey(K key):它与上一个 key 具有相同的工作,但唯一的不同是它不包含mapped-keys。ceilingEntry(K Key):用于返回与大于或等于给定键的最小键关联的键值映射,如果没有这样的键,则返回null。HigherEntry() - 返回与所有大于指定键的键中最小的键相关的条目。lowerEntry() - 返回与所有小于指定键的键中最大的键关联的条目。HigherKey() - 返回大于指定键的那些键中的最小的键。

2024-07-08 13:38:41 196

原创 leetcode:罗马数字转整数

【代码】leetcode:罗马数字转整数。

2024-07-06 15:53:55 215

原创 leetcode:统计对称整数的数目

至于怎么试,方法很多,有的转为字符串,取前两位和后两位比较。有的分别取出每一位,前两位相加是否等于后两位相加。很多都是枚举的,从start开始枚举,一个个试。其他的依次类推,可以使用打表法。这题我看了下其他答案。

2024-07-03 21:38:58 203

原创 leetcode:严格回文的数字

任何数字n的n-2进制都不是回文数。所以直接返回false即可。比如5的3进制,等于12。7的5进制,等于12。

2024-07-03 16:03:16 172

原创 leetcode:找到指定长度的回文数

这个题需要在草稿本上找规律。不断修改,终于通过了。

2024-07-03 15:40:56 89

原创 leetcode:回文数

比如677787776,后半部分7776反转为6777。比如4553,反转为3554,然后逐一比较即可。和前半部分6777一样,所以是回文。还有一种办法,我们只反转一半。不过此题有另一种解法。有个缺陷就是容易溢出。

2024-07-02 16:45:13 126

原创 leetcode:二叉树的最小深度

左边最小值是0,右边管你多少,min(左最小,右最小)一定是0。最小深度=左节点最小深度和右节点最小深度的最小值+1。最后结果是0+1=1,最小长度是1。这个题我按照分解问题来想。为什么加上两个if?

2024-06-03 22:45:49 171 2

原创 leetcode:二叉树的垂直遍历

前序遍历不能维护从上到下的顺序,所以还需要维护每个节点的深度,利用深度保证上下顺序。相比层序遍历,要更麻烦一些。这样的话你每次取最小值先是9,然后是3,15,然后20,然后7,顺序是对的。递归函数记录每一个节点的垂直值。并不是你往里存值按照先来后到。然后每次取哈希表最小值输出。但问题是哈希表偏偏不这么存。所以这道题建议层序遍历。比如以上面第一个树为例。顺序是对的,不能打乱。但是你忽视了一个问题。你以为的哈希表存的是。

2024-06-03 21:53:49 209

原创 leetcode:二叉树的堂兄弟节点

记录每一个节点的深度和父节点,需要设置函数参数。所以你在判断条件的时候要加上不为空。如果x或者y就是头节点,咋办?找到第一个就记录在全局变量里。所以最后结果一定是false。第一次凭本事做出一道递归题。因为二者只要有一个是头节点。刚进入左节点深度肯定加1。那么头节点肯定没有父节点。离开右节点深度肯定减1。继续记录在全局变量里。

2024-05-29 23:06:21 150

原创 leetcode:二叉树的锯齿形层序遍历

初始值是0表示第一层,这样0%2余数是0,表示不反转。每次都要加1,如果余数是1,表示反转。整体上没改动,就加了10行左右。只不过你要区分到了哪一层。

2024-05-28 21:30:33 112

原创 leetcode:二叉树的层序遍历II

这里比较巧妙,第一次添加的时候使用addFirst方法。这个和二叉树层序遍历模板几乎一样。就是把模板的结果逆序即可。

2024-05-27 22:13:46 213

原创 leetcode:二叉树的层平均值

一个是通过两个变量来控制不同层。一个是通过两个队列来区分不同层。我这里使用的是两个队列来区分。其实看你能不能区分层。

2024-05-27 22:11:31 141

原创 leetcode:二叉树的直径

最大直径就是一个节点的左子树最长长度+右子树最长长度+1。和子树有关,就是后序位置。

2024-04-11 22:09:18 168

原创 leetcode:二叉树的最大深度

第二种能否通过子问题答案推导出来。一种能否遍历一遍得到结果。这个题明显两种都可以。

2024-04-11 21:49:37 208 1

原创 leetcode一些基本语法问题(持续更新)

因为这样的话,你如果想把list清空,那么ans也会跟着改变,索引导致的。题目返回List你可以建一个全局变量。

2024-04-11 21:02:07 116

原创 leetcode:二叉树的层序遍历

就是一层一层的,从上到下。每统计完一层,加进去。

2024-04-11 20:58:21 103

原创 leetcode:二叉树的后序遍历

【代码】leetcode:二叉树的后序遍历。

2024-04-11 15:36:09 94 1

原创 leetcode:二叉树的前序遍历

【代码】leetcode:二叉树的前序遍历。

2024-04-11 15:34:02 70 1

原创 leetcode:二叉树的中序遍历

很简单,直接写就行了。

2024-04-11 15:31:19 101 1

原创 leetcode:组合总和

之前子集组合如何保证不重复?就是start变量,下一个从start+1开始。这里start开始,下次还是start开始。比如1,2,3,target=3。

2024-04-10 23:08:38 113

原创 leetcode:全排列II

这个剪枝逻辑就是比如1,2,2‘,首先肯定是判断前后是否相等,然后还要加一条。因为1,2,2‘’,你2‘’前面是2‘,没用,直接2’‘,肯定要剪去。比如下图,最右边,你2都没用,直接2‘,剪去。你可以以1,2,2‘,2’‘为例想一下。只有1,2,2’不会剪,剩下都被剪去。2’只有在2用了的情况下才能使用。

2024-04-10 22:53:28 109

原创 leetcode:组合总和II

其实就是在元素可重复不可复选子集题里加一个变量用于记录和。再来一个if判断是否等于target即可。和元素可重复不可复选子集题差不多。

2024-04-10 22:36:24 156

空空如也

空空如也

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

TA关注的人

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