- 博客(34)
- 收藏
- 关注
原创 [LeetCode]110. 平衡二叉树
110. 平衡二叉树题目地址:https://leetcode-cn.com/problems/balanced-binary-tree//*给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。*//*计算每个结点的高度然后判断每个结点是否平衡*//** * Definition for a binary tree node. * struct TreeNode { *
2020-11-07 16:06:07
112
原创 [LeetCode]530. 二叉搜索树的最小绝对差
530. 二叉搜索树的最小绝对差题目地址:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst//*给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。*//*二叉搜索树的中序排列是递增的,因此差绝对值最小的一定是中序遍历相邻两结点因此用一个变量pre记住上一个结点,然后用当前结点与pre做差,最后记录最小的结果即可*//** * Definition for a bi
2020-11-07 15:50:15
127
原创 [LeetCode]872. 叶子相似的树
872. 叶子相似的树题目地址:https://leetcode-cn.com/problems/leaf-similar-trees//*请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。*//*遍历查看两颗树的叶子结点序列是否相同即可*//** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; *
2020-11-07 15:28:59
128
原创 [LeetCode]1356. 根据数字二进制下 1 的数目排序
1356. 根据数字二进制下 1 的数目排序题目地址:https://leetcode-cn.com/problems/sort-integers-by-the-number-of-1-bits//*给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。请你返回排序后的数组。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems
2020-11-06 09:28:50
120
1
原创 [LeetCode]257. 二叉树的所有路径
257. 二叉树的所有路径题目地址:https://leetcode-cn.com/problems/binary-tree-paths//*给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。*//*简单的先序遍历然后存储起来路径上的值,最后将路径的值连接起来变成字符串储存起来即可*//*struct TreeNode { int val; TreeNode* left; TreeNode* right; T
2020-11-05 19:27:08
69
原创 [LeetCode]606. 根据二叉树创建字符串
606. 根据二叉树创建字符串题目地址:https://leetcode-cn.com/problems/construct-string-from-binary-tree//*你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。空节点则用一对空括号 "()" 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/construct-str
2020-11-05 16:13:25
52
原创 [LeetCode]面试题 04.05. 合法二叉搜索树
面试题 04.05. 合法二叉搜索树题目地址:https://leetcode-cn.com/problems/legal-binary-search-tree-lcci//*实现一个函数,检查一棵二叉树是否为二叉搜索树。*//*二叉搜索树的中序遍历是一个递增数列中序遍历,若不满足递增顺序则为非法,否则为合法*//** * Definition for a binary tree node. * struct TreeNode { * int val; *
2020-11-04 21:31:35
117
原创 [LeetCode]1379. 找出克隆二叉树中的相同节点
1379. 找出克隆二叉树中的相同节点题目地址:https://leetcode-cn.com/problems/find-a-corresponding-node-of-a-binary-tree-in-a-clone-of-that-tree//*给你两棵二叉树,原始树 original 和克隆树 cloned,以及一个位于原始树 original 中的目标节点 target。其中,克隆树 cloned 是原始树 original 的一个 副本 。请找出在树 cloned 中,与 ta
2020-11-04 20:18:06
109
原创 [LeetCode]1022. 从根到叶的二进制数之和
1022. 从根到叶的二进制数之和题目地址:https://leetcode-cn.com/problems/sum-of-root-to-leaf-binary-numbers/本题与 129 题思路方法相同:https://blog.csdn.net/weixin_40468534/article/details/109261857/*给出一棵二叉树,其上每个结点的值都是 0 或 1 。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路径为 0 -> 1 ->
2020-11-04 20:07:32
672
原创 [LeetCode]57. 插入区间
57. 插入区间题目地址:https://leetcode-cn.com/problems/insert-interval//*给出一个无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。*//*给出的区间列表为 intervals , 要插入的区间为 newInterval用 it 指向 intervals 的首个区间,与 newInterval 比较,如果 it 指向的区间整个在 newIn
2020-11-04 13:23:15
75
原创 [LeetCode]705. 设计哈希集合
705. 设计哈希集合题目地址:https://leetcode-cn.com/problems/design-hashset//*不使用任何内建的哈希表库设计一个哈希集合具体地说,你的设计应该包含以下的功能add(value):向哈希集合中插入一个值。contains(value) :返回哈希集合中是否存在这个值。remove(value):将给定值从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。来源:力扣(LeetCode)链接:https://leetcode-cn
2020-11-03 16:02:02
79
原创 [LeetCode]941. 有效的山脉数组
941. 有效的山脉数组题目地址:https://leetcode-cn.com/problems/valid-mountain-array//*给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false。让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:A.length >= 3在 0 < i < A.length - 1 条件下,存在 i 使得:A[0] < A[1] < ... A[i-1] < A[i]A
2020-11-03 12:56:10
58
原创 [LeetCode]349. 两个数组的交集
349. 两个数组的交集题目地址:https://leetcode-cn.com/problems/intersection-of-two-arrays//*给定两个数组,编写一个函数来计算它们的交集。*//*用两个 set 将两个数组的数字存储起来,减少重复数字的影响然后遍历两个 set 查找相同数字即可*/class Solution {public: vector<int> intersection(vector<int>& nums1
2020-11-02 12:26:12
125
原创 [LeetCode]381. O(1) 时间插入、删除和获取随机元素 - 允许重复
381. O(1) 时间插入、删除和获取随机元素 - 允许重复题目地址:https://leetcode-cn.com/problems/insert-delete-getrandom-o1-duplicates-allowed//*设计一个支持在平均 时间复杂度 O(1) 下, 执行以下操作的数据结构。注意: 允许出现重复元素。insert(val):向集合中插入元素 val。remove(val):当 val 存在时,从集合中移除一个 val。getRandom:从现有集合中随机获
2020-10-31 13:42:05
139
原创 [LeetCode]463. 岛屿的周长
463. 岛屿的周长题目地址:https://leetcode-cn.com/problems/island-perimeter//*我起初的想法是遍历矩阵,对每个为1的位置,其上下左右若为边界外或者为0,那么其边数就+1,也通过了,但代码写的比较丑,然后参考了评论区别人的方法,从左上开始遍历,对每个为1的位置,其边数贡献+4,然后判断它的右边和下边,若与其他的1相连,则总边数-2,因为自己和相邻的正方形都会因为连接而损失一条边从左上开始并只判断右边和下边,也避免了重复,而且代码比较简洁
2020-10-30 10:29:30
45
原创 [LeetCode]969. 煎饼排序
969. 煎饼排序题目地址:https://leetcode-cn.com/problems/pancake-sorting//*给定数组 A,我们可以对其进行煎饼翻转:我们选择一些正整数 k <= A.length,然后反转 A 的前 k 个元素的顺序。我们要执行零次或多次煎饼翻转(按顺序一次接一次地进行)以完成对数组 A 的排序。返回能使 A 排序的煎饼翻转操作所对应的 k 值序列。任何将数组排序且翻转次数在 10 * A.length 范围内的有效答案都将被判断为正确。提示:
2020-10-29 16:10:39
151
原创 [LeetCode]49. 字母异位词分组
49. 字母异位词分组题目地址:https://leetcode-cn.com/problems/group-anagrams//*给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。*//*对于字符串中的每个字符串 str , 我们 sort 一下,那么所有的异位词因为包含完全相同但不同序的字母,排完序后都会是一样的例如 "eat","tea","ate" 来说,sort 完都是 "aet",因此我们可以使用 map< string , vect
2020-10-28 12:19:25
56
原创 [LeetCode]1207. 独一无二的出现次数
1207. 独一无二的出现次数题目地址:https://leetcode-cn.com/problems/unique-number-of-occurrences//* 给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。 如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。*/// 用一个 map 将数字和其出现的次数统计一下// 然后将所有的 map 中存储的数字出现的次数放进一个 set 中// 若有相同的次数,则 set 因其元素的唯一性,会造成
2020-10-28 11:55:05
134
原创 [LeetCode]144. 二叉树的前序遍历
144. 二叉树的前序遍历题目地址:https://leetcode-cn.com/problems/binary-tree-preorder-traversal//*struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode() : val(0), left(nullptr), right(nullptr) {} TreeNode(int x) : val(x), left(nullptr)
2020-10-27 16:08:31
105
原创 [LeetCode]LCP 18. 早餐组合
LCP 18. 早餐组合题目地址:https://leetcode-cn.com/problems/2vYnGI/// 先对 staple 和 drinks 进行从小到大的排序// 然后依次选择 staple 中的一个食物,下表为index,然后去 drinks 寻找满足 drinks[i] <= x - staple[index] 的饮料 i // 因为是排好序的数组,我们可以直接使用二分查找寻找满足条件的 i// 然后将每种 staple 对应的所有满足条件的饮料个数相加返回即可
2020-10-26 13:26:48
273
原创 [LeetCode] 845. 数组中的最长山脉
845. 数组中的最长山脉题目地址:https://leetcode-cn.com/problems/longest-mountain-in-array/// 遍历数组,找到山顶 i, 即满足 A[i] > A[i - 1] && A[i] > A[i + 1] 的点// 然后向左右两个方向下山,满足条件就将山脉长度加一// 当左右两边都不能继续满足条件了则继续去寻找下一个山峰class Solution {public: int longestMount
2020-10-25 18:57:45
81
原创 [LeetCode]129. 求根到叶子节点数字之和
129. 求根到叶子节点数字之和题目地址:https://leetcode-cn.com/problems/sum-root-to-leaf-numbers//** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), ri
2020-10-24 16:39:29
72
原创 [LeetCode]1024. 视频拼接
1024. 视频拼接题目地址:https://leetcode-cn.com/problems/video-stitching/动态规划// 动态规划方法// dp[index] 为到位置 index 所需要的最少的片段数// 对于一个区间[ai,bi)和位置index,若 ai < index <= bi ,则dp[index] = dp[ai] + 1class Solution {public: int videoStitching(vector<vecto
2020-10-24 11:07:23
11940
原创 [LeetCode]1208. 尽可能使字符串相等
1208. 尽可能使字符串相等题目链接:https://leetcode-cn.com/problems/get-equal-substrings-within-budget/// 滑动窗口// i 为左边下标,j 为右边下表// 1. 通过不断右移增加新的字符到窗口中,给定的费用将逐渐减少// 2. 当费用减少至不够用时,从窗口左边删除字符,费用随之增加// 3. 当费用增至可以再添加字符时,回到第 1 步继续执行,知道遍历完所有字符为止class Solution {public:
2020-10-23 22:26:20
87
原创 [LeetCode] 771. 宝石与石头
771. 宝石与石头给定字符串 J 代表石头中宝石的类型,和字符串 S 代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S 中的所有字符都是字母。字母区分大小写,因此 “a” 和 "A"是不同类型的石头。示例一:输入: J = “aA”, S = “aAAbbbb”输出: 3示例二:输入: J = “z”, S = “ZZ”输出: 0注意:S 和 J 最多含有50个字母。J 中的字符不重复。
2020-10-02 10:56:55
120
原创 编程珠玑 总结
第一章 开篇本章主要提了一个问题问题:一个最多包含 n 个正整数的文件,每个都小于 n ,其中 n = 10^7。如果在输入文件中有任何整数重复出现就是致命错误。没有其他数据与该整数相关联。方法:直接想到的方法应该是外部归并排序。更好的方法是位图法(伪代码如下):/*步骤一:初始化一个长度为 n 的数组为 0 */for i = [0, n) bit[i] = 0/*步骤二:凡是出现过的数字 i 令 bit[i] 为 1*/for each i in the input
2020-07-22 00:48:28
249
原创 [LeetCode]200. 岛屿数量
200. 岛屿数量给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3 这道题与 面试题 16...
2020-02-22 13:16:40
208
原创 面试题 16.19. 水域大小
面试题 16.19. 水域大小你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小,返回值需要从小到大排序。示例 :输入:[ [0,2,1,0], &n...
2020-02-21 18:58:00
2266
原创 [Leetcode]86. 分隔链表
19.删除链表的倒数第N个节点给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例 :给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?解决这道题的思路:设置两个指针 f 和 ...
2020-02-18 15:07:29
70
原创 C++Primer 第二章学习笔记
变量和基本类型2.1 基本内置类型2.1.1 算数类型基本的字符类型是 char ,一个 char 的空间应确保可以存放机器基本字符集中任意字符对应的数字值。也就是说,一个 char 的大小和一个机器字节一样。char 随编译器的不同表现为 unsigned char 或 signed char 。C++语言规定,一个 int 至少和一个 short 一样大, long 至...
2020-02-18 01:13:31
149
原创 [Leetcode]628. 三个数的最大乘积
628. 三个数的最大乘积给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1: 输入: [1,2,3] 输出: 6示例 2: 输入: [1,2,3,4] 输出: 24注意: 1.给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。 &nb...
2018-09-12 19:48:52
343
原创 [Leetcode]724. 寻找数组的中心索引
724. 寻找数组的中心索引给定一个整数类型的数组 nums,请编写一个能够返回数组“中心索引”的方法。 我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。 如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例 1: 输入: nums = [1, 7, 3, 6, 5, ...
2018-09-11 19:23:03
176
原创 [Leetcode]747. 至少是其他数字两倍的最大数
747. 至少是其他数字两倍的最大数在一个给定的数组nums中,总是存在一个最大元素 。 查找数组中的最大元素是否至少是数组中每个其他数字的两倍。 如果是,则返回最大元素的索引,否则返回-1。示例 1: 输入: nums = [3, 6, 1, 0] 输出: 1 解释: 6是最大的整数, 对于数组中的其他整数,6大于数组中其他元素的两倍。6的索引是1, 所以我们返回...
2018-09-10 11:02:38
228
原创 [Leetcode]459. 重复的子字符串
459. 重复的子字符串给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例 1: 输入: “abab” 输出: True 解释:...
2018-09-07 13:21:03
515
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人