自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 力扣小白刷题之485题最大连续1的个数

题目描述给定一个二进制数组,计算其中最大连续 1 的个数。思路参考自:https://leetcode-cn.com/problems/max-consecutive-ones/solution/java-485-zui-da-lian-xu-1de-ge-shu-hua-dong-chuang/滑动窗口:当输出或比较的结果在原数据结构中是连续排列的时候,可以使用滑动窗口算法求解。将两个指针比作一个窗口,通过移动指针的位置改变窗口的大小,观察窗口中的元素是否符和题意。初始窗口中只有数组开头

2020-09-03 17:54:28 277

原创 力扣小白刷题之566题重塑矩阵

题目描述在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数 r 和 c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。思路如果原始矩阵中的元素数量不等于所得矩阵中的元素数量,则不可能形成所得矩阵。我们需要跟踪我们何时到达结果矩阵

2020-09-03 17:11:07 292

原创 力扣小白刷题之283题移动零

题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。思路参考自:https://leetcode-cn.com/problems/move-zeroes/solution/0-ms-zai-suo-you-java-ti-jiao-zhong-ji-bai-liao–2/遍历数组,将 不为 0 的元素移动到数组前方,用 index 下标记录。遍历结束,对 index 值后

2020-09-02 14:57:22 291

原创 力扣小白刷题之696题计数二进制子串

题目描述给定一个字符串 s,计算具有相同数量 0 和 1 的非空(连续)子字符串的数量,并且这些子字符串中所有 0 和所有 1 都是组合在一起的。重复出现的子串要计算它们出现的次数。思路参考自:https://leetcode-cn.com/problems/count-binary-substrings/solution/yi-ge-bi-jiao-qiao-miao-de-ban-fa-by-uygn9i8c6n/定义两个变量 preLen 和 curLen,分别表示前面连续字符串中字符的

2020-09-01 16:23:18 147

原创 力扣小白刷题之9题回文数

题目描述判断一个整数是否是回文数。思路参考自:https://leetcode-cn.com/problems/palindrome-number/solution/dong-hua-hui-wen-shu-de-san-chong-jie-fa-fa-jie-ch/要求不能使用额外空间,也就不能将整数转换为字符串进行判断。将整数分为左右两部分,右边那部分需要转置,然后判断这两部分是否相等。由于回文数的位数可奇可偶,所以当它的长度为偶数时,对折过来应该是相等的;当它的长度为奇数时,需要去掉一位数

2020-09-01 15:20:18 126

原创 力扣小白刷题之647题回文子串

题目描述计算一个字符串中有多少个回文子串。具有不同的开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。思路参考自:https://github.com/CyC2018/CS-Notes/blob/master/notes/Leetcode%20题解%20-%20字符串.md#6-%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%90%8C%E6%9E%84从字符串的某一位开始,尝试着去扩展子字符串。代码...

2020-09-01 14:50:11 109

原创 力扣小白刷题之205题同构字符串

题目描述给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符 可以被替换得到 t,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。思路记录一个字符上一次出现的位置,如果两个字符串中的字符上次出现的位置一样,那么就属于同构。...

2020-09-01 10:14:39 130

原创 力扣小白刷题之409题最长回文串

题目描述给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串的长度。区分大小写。思路参考自:https://leetcode-cn.com/problems/longest-palindrome/solution/javade-2chong-shi-xian-fang-fa-by-sweetiee/使用长度为 58 的整型数组来统计每个字符出现的个数:每个字符有偶数个可以用来构成回文字符串;因为回文字符串最中间的那个字符可以单独出现, 所以如果有单独的字符就把它放到最

2020-08-31 11:23:52 188

原创 力扣小白刷题之242题有效的字母异位词

题目描述给定两个字符串 s 和 t,编写一个函数来判断 t 是否是 s 的字母异位词。思路参考自:https://github.com/CyC2018/CS-Notes/blob/master/notes/Leetcode%20题解%20-%20字符串.md即两个字符串包含的字符是否完全相同。可以使用 HashMap 来映射字符与出现次数,然后比较两个字符串出现的字符数量是否相同。由于本题的字符串只包含 26 个小写字母,因此可以使用长度为 26 的整型数组对字符串出现的字符进行统计,不再使用

2020-08-31 10:37:51 142

原创 力扣西小白刷题之128题最长连续序列

题目描述给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。思路哈希表参考自:https://leetcode-cn.com/problems/longest-consecutive-sequence/solution/zui-chang-lian-xu-xu-lie-by-leetcode-solution/我们考虑枚举数组中的每个数 x,考虑以其为起点,不断尝试匹配 x + 1, x + 2,… 是否存在,假设最长匹配到了 x + y,那么以 x 为起点的最

2020-08-31 10:13:20 166

原创 力扣小白刷题之594题最长和谐子序列

题目描述和谐数组是指一个数组里,元素的最大值和最小值差别正好为 1。现在给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。思路参考自:https://github.com/CyC2018/CS-Notes/blob/master/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E5%93%88%E5%B8%8C%E8%A1%A8.md和谐序列中最大数与最小数之差正好为 1,应该注意的是序列的元素不一定是数组的连续元素。题目要求的不是子数

2020-08-28 17:53:34 148

原创 力扣小白刷题之217题存在重复元素

题目描述给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中至少出现两次,函数返回 true。如果数组中每个元素都不相同,则返回false。思路参考:https://blog.csdn.net/liuhangsheng/article/details/79535356https://github.com/CyC2018/CS-Notes/blob/master/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E5%93%88%E5%B8%8C%E8%A

2020-08-28 17:08:06 144

原创 力扣小白刷题之01题两数之和

题目描述给定一个整数数组 nums 和一个目标值 target,请在该数组中找出和为目标值的那 两个整数,并返回它们的数组下标。思路参考自:https://github.com/CyC2018/CS-Notes/blob/master/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E5%93%88%E5%B8%8C%E8%A1%A8.md可以先对数组进行排序,然后使用双指针方法或者二分查找法。这样做的时间复杂度为 O(N logN),空间复杂度为 O(1)。

2020-08-28 16:54:21 92

原创 力扣小白刷题之503题下一个更大元素Ⅱ

题目描述给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。思路与 739 不同的是,数组是循环数组,并且要求的不是距离而是下一个元素。参考自:https://leetcode-cn.com/problems/next-greater-element-ii/solution/dan-diao-zhan-jie-

2020-08-20 17:45:04 149

原创 力扣小白刷题之739题每日温度

题目描述请根据每日气温列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果在这之后气温都不会再升高,请在该位置用 0 来代替。题目理解数组中元素与下一个比它大的元素之间的距离思路参考自:https://leetcode-cn.com/problems/daily-temperatures/solution/leetcode-tu-jie-739mei-ri-wen-du-by-misterbooo/遍历整个数组,如果栈不空,且当前数字的气温大于栈顶元素的数字的

2020-08-19 18:52:22 282

原创 力扣小白刷题之20题有效的括号

题目描述思路参考自:https://leetcode-cn.com/problems/valid-parentheses/solution/valid-parentheses-fu-zhu-zhan-fa-by-jin407891080/栈 先入后出的特点与本题括号排序特点一致:即遇到左括号入栈,遇到右括号将对应栈顶左括号出栈,则遍历完所有括号后,stack 仍为空。时间复杂度:O(N),正确的括号组合需要遍历一遍 s空间复杂度:O(N),哈希表和栈使用线性的空间大小代码小知识

2020-08-19 16:34:57 163

原创 力扣小白刷题之155题最小栈

题目描述设计一个支持 push、pop、top 操作,并能在常数时间内检索到最小元素的栈。push(x) — 将元素 x 放入栈中pop() — 删除栈顶的元素top() — 获取栈顶元素getMin() — 检索栈中的最小元素注意: pop top getMin 操作总是在 非空栈 上调用参考自:https://leetcode-cn.com/problems/min-stack/solution/xiang-xi-tong-su-de-si-lu-fen-xi-duo-ji

2020-08-18 17:02:53 140

原创 力扣小白刷题之225题用队列实现栈

题目描述使用队列实现栈的下列操作:push() – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空注意:你只能使用队列的基本操作 – 也就是 push to back, peek/pop from front,size,和 is empty 这些操作是合法的。你所使用的语言也许不支持队列。你可以使用 list 或者 deque (双端队列) 来模拟一个队列,只要是标准的队列操作即可。假设所有的操作都是有效的 (例如,对一个空

2020-08-17 17:22:28 160

原创 力扣小白刷题之232题用栈实现队列

题目描述使用栈实现队列的下列操作:push(x) — 将一个元素放入队列的尾部。pop() — 从队列首部移除元素peek() — 返回队列首部的元素empty() — 返回队列是否为空说明:你只能使用标准的栈操作 – 也就是只有 push to top, peek/pop from top,size 和 is empty 操作是合法的。你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列) 来模拟一个栈,只要是标准的栈操作即可。假设所有的操作都是有效的,

2020-08-17 16:16:10 162

原创 力扣小白刷题之501题二叉搜索树中的众数

题目描述给定一个有相同值的 BST,找出 BST 中的所有众数(出现频率最高的元素)。假设 BST 中有如下定义:结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的值右子树和左子树都是 BST思路参考自:https://leetcode-cn.com/problems/find-mode-in-binary-search-tree/solution/er-cha-sou-suo-shu-zhong-de-zhong-shu-by-junstat/BST

2020-08-17 15:23:43 163

原创 力扣小白刷题之530题二叉搜索树的最小绝对差

题目描述给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。思路利用BST中序遍历有序的性质,遍历时计算临近的两个节点之差的绝对值,取最小值。代码...

2020-08-13 18:27:00 105

原创 力扣小白刷题之530题二叉搜索树的最小绝对差

题目描述给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。思路利用BST中序遍历有序的性质,遍历时计算临近的两个节点之差的绝对值,取最小值。代码...

2020-08-13 18:27:00 73

原创 力扣小白刷题之653题两数之和Ⅳ-输入BST

题目描述给定一个BST和一个目标结果,如果BST中存在两个元素且它们的和等于给定的目标结果,则返回 true。思路参考自:https://leetcode-cn.com/problems/two-sum-iv-input-is-a-bst/solution/liang-shu-zhi-he-iv-by-leetcode/使用中序遍历得到有序数组之后,再利用双指针对数组进行查找。应该注意到,这一题不能用分别在左右子树两部分来处理这种思想,因为两个待求的节点可能分别在左右子树中。中序遍历BST,

2020-08-13 17:15:32 116

原创 力扣小白刷题之109题有序链表转换为二叉搜索树

题目描述给定一个单链表,其中的元素按照升序排序,将其转换为高度平衡的二叉搜索树。(高度差的绝对值不超过1)思路参考自:https://leetcode-cn.com/problems/convert-sorted-list-to-binary-search-tree/solution/you-xu-lian-biao-zhuan-huan-er-cha-sou-suo-shu-by-/BST的中序遍历是一个升序数组,所以对于升序链表,要将其转换为高度平衡的BST,只需要找到其中间的节点,将中间的节点

2020-08-12 15:42:41 245

原创 力扣小白刷题之108题将有序数组转换为二叉搜索树

题目描述将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。思路参考自:https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree/solution/jian-dan-di-gui-bi-xu-miao-dong-by-sweetiee/二叉查找树的中序遍历是一个升序数组。因此本题等同于根据中序遍历的序列恢复二叉

2020-08-12 14:45:02 173

原创 力扣小白刷题之236题二叉树的最近公共祖先

题目描述找到一个二叉树 中两个指定节点的最近公共祖先。最近公共祖先定义:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”思路根据公共祖先和最近公共祖先的定义,可以得出:若root 是 p 和 q 的最近公共祖先,则只可能为以下情况之一:p 和 q 在 root 的子树中,且分列 root 的异侧(即分别在左、右子树中);p = root,且 q 在 root 的左或右子树中;q = r

2020-08-12 14:16:06 98

原创 力扣小白刷题之235题二叉搜索树的最近公共祖先

题目描述找到一个二叉搜索树中两个指定节点的最近公共祖先。最近公共祖先定义:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”思路根据二叉搜索树的特性:如果根节点的值同时大于 p 和 q 节点的值,说明 p 和 q 都在左子树上,所以就继续递归左子树。如果根节点的值同时小于 p 和 q 节点的值,说明 p 和 q 都在右子树上,所以就继续递归右子树。否则的话,就说明根节点位于 p 和 q

2020-08-11 17:58:23 118

原创 把二叉搜索树每个节点的值都加上比它大的节点的值

题目描述思路参考自:https://github.com/CyC2018/CS-Notes/blob/master/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E6%A0%91.md#1-%E4%BF%AE%E5%89%AA%E4%BA%8C%E5%8F%89%E6%9F%A5%E6%89%BE%E6%A0%91先遍历右子树代码private int sum = 0;public TreeNode convertBST(TreeNode root) {

2020-08-11 16:59:40 144

原创 力扣小白刷题之230题二叉搜索树中第 K 小的元素

题目描述给定一个二叉搜索树,编写一个函数 来查找其中第 k 个最小的元素。思路参考自:https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst/solution/xiang-xi-tong-su-de-si-lu-fen-xi-duo-jie-fa-by–48/二叉搜索树:中序遍历输出是一个升序数组。所以只需要把中序遍历的第 k 个元素返回即可。增加两个变量 cnt 和 val,cnt 记录中序遍历已经输出的元素个数,当 cnt

2020-08-10 15:59:44 187

原创 力扣小白刷题之669题修剪二叉搜索树

题目描述给定一个二叉搜索树,同时给定最小边界 L 和最大边界 R。通过修建二叉搜索树,使得所有节点的值在 [L, R] 中 (R >= L)。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。思路参考自:https://leetcode-cn.com/problems/trim-a-binary-search-tree/solution/xiu-jian-er-cha-sou-suo-shu-by-leetcode/令 trim(node) 作为该节点上的子树的理想答案

2020-08-10 15:23:14 251

原创 力扣小白刷题之94题二叉树的中序遍历

题目描述给定一个二叉树,返回它的中序遍历。https://leetcode-cn.com/problems/binary-tree-inorder-traversal/solution/dong-hua-yan-shi-94-er-cha-shu-de-zhong-xu-bian-li/递归解法public static void inOrderRecur(TreeNode head) { if (head == null) return; inOrderRecur(head.left); S

2020-08-07 17:58:47 253

原创 力扣小白刷题之145题二叉树的后序遍历

题目描述给定一个二叉树,返回它的后序遍历。参考自:https://github.com/CyC2018/CS-Notes/blob/master/notes/Leetcode%20题解%20-%20树.md#1-%E9%9D%9E%E9%80%92%E5%BD%92%E5%AE%9E%E7%8E%B0%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%89%8D%E5%BA%8F%E9%81%8D%E5%8E%86递归解法public static void postOr

2020-08-07 15:49:57 175

原创 力扣小白刷题之144题二叉树的前序遍历

题目描述给定一个二叉树,返回它的前序遍历参考自:https://leetcode-cn.com/problems/binary-tree-preorder-traversal/solution/leetcodesuan-fa-xiu-lian-dong-hua-yan-shi-xbian-2/递归解法public static void preOrderRecur(TreeNode head) { if (head == null) return; System.out.print(head.v

2020-08-07 15:13:51 219

原创 力扣小白刷题之513题找树左下角的值

题目描述给定一个二叉树,找到树的最后一层最左边的值。思路层序遍历,利用BFS实现参考自:https://leetcode-cn.com/problems/find-bottom-left-tree-value/solution/cong-you-dao-zuo-de-ceng-xu-bian-li-bu-xu-ji-lu-zh/一般的层序遍历是从左往右,遍历到最后的元素就是右下角的元素。如果反过来,每层从右往左进行层序遍历,最后一个就是左下角元素,直接输出即可。代码...

2020-08-06 17:48:57 160

原创 力扣小白刷题之637题二叉树的层平均值

题目描述给定一个非空二叉树,返回一个由每层节点平均值组成的数组。思路BFS : 使用BFS进行层次遍历,不需要使用两个队列来分别存储当前层的节点和下一层的节点,因为在开始遍历一层的节点时,当前队列中的节点就是当前层的节点数,只要控制遍历这么多节点数,就能保证这次遍历的都是当前层的节点。时间复杂度:O(n),n 是树中节点个数。空间复杂度:O(m),m 是树中每一层节点个数的最大值,即为BFS中使用队列存储同一层节点需要的空间。代码...

2020-08-06 15:51:55 208

原创 力扣小白刷题之671题找出二叉树中第二小的节点

题目描述给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。给出这样一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1。思路https://leetcode-cn.com/problems/second-minimum-node-in-a-binary-tree/solution/671java-0msdi-gui-hen-jian-ji-e-by-ustcyy

2020-08-05 12:13:25 477

原创 力扣小白刷题之337题打家劫舍Ⅲ

题目描述一个地区的所有房屋排列类似于一棵二叉树,如果直接相连的两个房屋在同一天晚上被打劫房屋将自动报警。计算在不触发警报的情况下,小偷一晚能够盗取的最高金额。思路参考自:https://leetcode-cn.com/problems/house-robber-iii/solution/san-chong-fang-fa-jie-jue-shu-xing-dong-tai-gui-hu/解法一:暴力递归——最优子结构使用 爷爷 、两个孩子、四个孙子来说明问题:首先定义问题的状态:爷爷节点能够

2020-08-05 11:06:22 149

原创 力扣小白刷题之404题左叶子之和

题目描述计算给定二叉树的所有左叶子之和。递归参考自:https://leetcode-cn.com/problems/sum-of-left-leaves/solution/javadi-gui-yu-die-dai-shi-xian-si-lu-by-ggb2312/先求出所有叶子节点的和在此基础上,再来求所有左叶子节点之和。当前节点是不是左节点,可以通过父节点标识。代码错误...

2020-08-04 15:33:11 93

原创 力扣小白刷题之111题二叉树的最小深度

题目描述给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。递归参考自:https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/solution/li-jie-zhe-dao-ti-de-jie-shu-tiao-jian-by-user7208/递归结束条件:叶子节点的定义是左孩子和右孩子都为 null 时叫做叶子节点当 root 节点左右孩子都为空时,返回 1;(可以合并到情况2)当

2020-08-04 11:54:24 150

原创 力扣小白刷题之101题对称二叉树

题目描述给定一个二叉树,检查它是否是镜像对称的。递归参考自:https://leetcode-cn.com/problems/symmetric-tree/solution/dong-hua-yan-shi-101-dui-cheng-er-cha-shu-by-user7/https://leetcode-cn.com/problems/symmetric-tree/solution/hua-jie-suan-fa-101-dui-cheng-er-cha-shu-by-guanpe/镜像对称,

2020-08-04 10:11:49 121

空空如也

空空如也

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

TA关注的人

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