自定义博客皮肤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)
  • 收藏
  • 关注

原创 分割等和子集及路径

leetcode 416. 分割等和子集的进阶题目要求:当可以分割的时候,输出其中一个集合的元素输出两个也是可以的在输出的时候 使用unordered_set存储集合的下标那么此时 在 unordered_set 中的下标为其中一个集合 不在的为另一个集合class Solution {public: bool canPartition(vector<int>& nums) { int n = nums.size(); if (

2022-04-17 16:01:30 1070

原创 protocol 在goland中的使用

protocol,goland,go-proto-validators

2022-01-25 15:14:08 646

原创 矩阵快速幂

只是为了记录个人所学,整理出来防止忘记,大佬勿喷,一般不看评论,怕被喷矩阵快速幂整数快速幂矩阵快速幂整数快速幂介绍整数快速幂之前先要说明整数的快速幂是什么?如何实现。在本质上整数快速幂和矩阵快速幂是相同的,如果知道整数快速幂的实现和原理,那么现在你需要自己实现矩阵快速幂。x和y 均为正整数的情况整数快速幂应该是比较熟悉的 xy ,假设我们需要求x的y次幂,那么一种直观的方法是直接遍历y次。注意类型之间的转换尤其是go 还有数据的范围,一般都会 %modc++long long mult

2022-01-18 15:11:21 434

原创 并查集

撒旦撒

2021-02-01 21:23:00 126

原创 (144)925. 长按键入(leetcode)

题目链接:https://leetcode-cn.com/problems/long-pressed-name/难度:简单925. 长按键入 你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。 你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。示例 1: 输入:name = "alex", typed = "aaleex" 输出:true 解释:'a

2020-10-21 15:24:42 57

原创 (143)143. 重排链表(leetcode)

题目链接:https://leetcode-cn.com/problems/reorder-list/难度:中等143. 重排链表 给定一个单链表 L:L0→L1→…→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1: 给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2: 给定链表 1->2->3-&gt

2020-10-21 15:09:43 57

原创 (140)52. N皇后 II(leetcode)*

N皇后 IIn 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回 n 皇后不同的解决方案的数量。class Solution {public: // 列 unordered_set<int> columns; // i+j unordered_set<int> diagonal1; // j-i unordered_set&l.

2020-10-21 15:07:11 59

原创 (142)844. 比较含退格的字符串(leetcode)

题目链接:https://leetcode-cn.com/problems/backspace-string-compare/难度:简单844. 比较含退格的字符串 给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。 注意:如果对空文本输入退格字符,文本继续为空。示例 1: 输入:S = "ab#c", T = "ad#c" 输出:true 解释:S 和 T 都会变成 “ac”。示例 2: 输入:S = "ab##",

2020-10-19 11:04:17 63

原创 (141)19. 删除链表的倒数第N个节点(leetcode)

题目链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/难度:中等19. 删除链表的倒数第N个节点给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5.说明: 给定的 n 保证是有效的。进阶: 你能尝试使用一趟扫描实现吗

2020-10-18 13:35:58 57

原创 (139)977. 有序数组的平方(leetcode)

题目链接:https://leetcode-cn.com/problems/squares-of-a-sorted-array/难度:简单977. 有序数组的平方给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例 1: 输入:[-4,-1,0,3,10] 输出:[0,1,9,16,100]示例 2: 输入:[-7,-3,2,3,11] 输出:[4,9,9,49,121]提示: 1 <= A.length <= 10000

2020-10-16 09:57:13 94

原创 (138)116. 填充每个节点的下一个右侧节点指针(leetcode)

题目链接:https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node/难度:中等116. 填充每个节点的下一个右侧节点指针 给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指

2020-10-15 14:15:28 50

原创 (137)1002. 查找常用字符(leetcode)

题目链接:https://leetcode-cn.com/problems/find-common-characters/难度:简单1002. 查找常用字符 给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。 你可以按任意顺序返回答案。示例 1: 输入:["bella","label","roller"] 输出:["e","l","l"

2020-10-14 10:12:36 72

原创 (136)24. 两两交换链表中的节点(leetcode)

题目链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs/难度:中等24. 两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例: 给定 1->2->3->4, 你应该返回 2->1->4->3.不算难 感觉归为简单题会更好一点 不过 相比来说我写的代码好垃圾 都是迭代 为何。。。这是自己写的

2020-10-13 10:00:36 58

原创 (135)530. 二叉搜索树的最小绝对差(leetcode)

题目链接:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/难度:简单530. 二叉搜索树的最小绝对差 给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。示例: 输入: 1 \ 3 / 2输出: 1解释: 最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。还行。。递归解法/** * Def

2020-10-12 10:08:42 79

原创 (134)416. 分割等和子集(leetcode)

题目链接:https://leetcode-cn.com/problems/partition-equal-subset-sum/难度:中等416. 分割等和子集 给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200示例 1: 输入: [1, 5, 11, 5] 输出: true 解释: 数组可以分割成 [1, 5, 5] 和 [11].这个题 没做出来。。。原本的思路

2020-10-11 16:16:20 62

原创 (133)142. 环形链表 II(leetcode)

题目链接:https://leetcode-cn.com/problems/linked-list-cycle-ii/难度:中等142. 环形链表 II 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环, 则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶: 你是否可以

2020-10-11 10:04:35 50

原创 (132)141. 环形链表(leetcode)

题目链接:https://leetcode-cn.com/problems/linked-list-cycle/难度:简单141. 环形链表 给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 如果链表中存在环,则

2020-10-09 09:36:15 51

原创 (131)剑指 Offer 43. 1~n整数中1出现的次数(leetcode)

题目链接:https://leetcode-cn.com/problems/1nzheng-shu-zhong-1chu-xian-de-ci-shu-lcof/难度:中等剑指 Offer 43. 1~n整数中1出现的次数 输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。 例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。示例 1: 输入:n = 12 输出:5示例 2: 输入:n = 13 输出:6限制: 1 <=

2020-10-08 16:26:09 118

原创 (130)344. 反转字符串(leetcode)

题目链接:https://leetcode-cn.com/problems/reverse-string/难度:简单344. 反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1: 输入:["h","e","l","l","o"] 输出:["o","l","l","e

2020-10-08 09:19:58 85

原创 (129)445. 两数相加 II(leetcode)

题目链接:https://leetcode-cn.com/problems/add-two-numbers-ii/难度:中等445. 两数相加 II 给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶: 如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例: 输入:(7 -> 2 -> 4 -> 3) +

2020-10-07 19:42:12 57

原创 (128)75. 颜色分类(leetcode)

题目链接:https://leetcode-cn.com/problems/sort-colors/难度:中等75. 颜色分类 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意: 不能使用代码库中的排序函数来解决这道题。示例: 输入: [2,0,2,1,1,0] 输出: [0,0,1,1,2,2]进阶: 一个直观的解决方案是使用计数

2020-10-07 09:47:44 83

原创 (127)834. 树中距离之和(leetcode)

题目链接:https://leetcode-cn.com/problems/sum-of-distances-in-tree/难度:困难834. 树中距离之和 给定一个无向、连通的树。树中有 N 个标记为 0...N-1 的节点以及 N-1 条边 。 第 i 条边连接节点 edges[i][0] 和 edges[i][1] 。 返回一个表示节点 i 与其他所有节点距离之和的列表 ans。示例 1: 输入: N = 6, edges = [[0,1],[0,2],[2,3],[2,4],[2,

2020-10-06 10:48:50 80

原创 (126)15. 三数之和(leetcode)

题目链接:https://leetcode-cn.com/problems/3sum/难度:中等15. 三数之和 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。示例: 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ]

2020-10-05 20:06:49 46

原创 (125)18. 四数之和(leetcode)

题目链接:https://leetcode-cn.com/problems/4sum/难度:中等18. 四数之和 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意: 答案中不可以包含重复的四元组。示例: 给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。 满足要求的四元

2020-10-05 11:18:10 133 1

原创 (124)5531. 特殊数组的特征值(leetcode)

题目链接:https://leetcode-cn.com/problems/special-array-with-x-elements-greater-than-or-equal-x/难度:简单5531. 特殊数组的特征值 给你一个非负整数数组 nums 。如果存在一个数 x ,使得 nums 中恰好有 x 个元素 大于或者等于 x ,那么就称 nums 是一个 特殊数组 ,而 x 是该数组的 特征值 。 注意: x 不必 是 nums 的中的元素。 如果数组 nums 是一个 特殊数组 ,请返

2020-10-04 19:42:04 99

原创 (123)5516. 警告一小时内使用相同员工卡大于等于三次的人(leetcode)

题目链接:https://leetcode-cn.com/problems/alert-using-same-key-card-three-or-more-times-in-a-one-hour-period/难度:中等5516. 警告一小时内使用相同员工卡大于等于三次的人 力扣公司的员工都使用员工卡来开办公室的门。每当一个员工使用一次他的员工卡,安保系统会记录下员工的名字和使用时间。如果一个员工在一小时时间内使用员工卡的次数大于等于三次,这个系统会自动发布一个 警告 。 给你字符串数组 key

2020-10-04 11:04:38 227 1

原创 (107)685. 冗余连接 II(leetcode)

题目链接:https://leetcode-cn.com/problems/redundant-connection-ii/submissions/难度:困难685. 冗余连接 II 在本问题中,有根树指满足以下条件的有向图。该树只有一个根节点,所有其他节点都是该根节点的后继。每一个节点只有一个父节点,除了根节点没有父节点。 输入一个有向图,该图由一个有着N个节点 (节点值不重复1, 2, ..., N) 的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边

2020-10-03 10:52:36 74

原创 (122)771. 宝石与石头(leetcode)

题目链接: https://leetcode-cn.com/problems/jewels-and-stones/ 难度:简单 771. 宝石与石头 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。 J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1: 输入: J = "aA", S = "aAAbbbb" 输出: 3示例 .

2020-10-02 09:41:21 101

原创 (121)LCP 19. 秋叶收藏集(leetcode)

题目链接:https://leetcode-cn.com/problems/UlBDOe/难度:中等LCP 19. 秋叶收藏集 小扣出去秋游,途中收集了一些红叶和黄叶,他利用这些叶子初步整理了一份秋叶收藏集 leaves, 字符串 leaves 仅包含小写字符 r 和 y, 其中字符 r 表示一片红叶,字符 y 表示一片黄叶。 出于美观整齐的考虑,小扣想要将收藏集中树叶的排列调整成「红、黄、红」三部分。每部分树叶数量可以不相等,但均需大于等于 1。每次调整操作,小扣可以将一片红叶替换成黄叶或者

2020-10-01 11:20:53 96

原创 (120)701. 二叉搜索树中的插入操作(leetcode)

题目链接:https://leetcode-cn.com/problems/insert-into-a-binary-search-tree/难度:中等701. 二叉搜索树中的插入操作 给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据保证,新值和原始二叉搜索树中的任意节点值都不同。 注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回任意有效的结果。例如, 给定二叉搜索树: 4

2020-09-30 10:04:06 51

原创 (119)145. 二叉树的后序遍历

题目链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal/难度:中等145. 二叉树的后序遍历 给定一个二叉树,返回它的 后序 遍历。示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗?递归多好。。。。。简单的不能再简单了/** * Definition for a

2020-09-29 09:48:20 60

原创 (118)117. 填充每个节点的下一个右侧节点指针 II(leetcode)

题目链接:https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node-ii/难度:中等117. 填充每个节点的下一个右侧节点指针 II 给定一个二叉树 struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next

2020-09-28 10:09:49 96

原创 (114)2. 两数相加(leetcode)

106. 从中序与后序遍历序列构造二叉树 根据一棵树的中序遍历与后序遍历构造二叉树。注意: 你可以假设树中没有重复的元素。 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9,15,7,20,3] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7...

2020-09-27 16:57:50 61

原创 (116)106. 从中序与后序遍历序列构造二叉树(leetcode)*

(114)

2020-09-27 16:22:42 49

原创 (117)235. 二叉搜索树的最近公共祖先(leetcode)

题目链接:https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-search-tree/难度:简单235. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树:

2020-09-27 10:27:32 80

原创 (115)113. 路径总和 II(leetcode)

题目链接:https://leetcode-cn.com/problems/path-sum-ii/难度:中等113. 路径总和 II 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4

2020-09-26 18:48:25 67

原创 (113)501. 二叉搜索树中的众数(leetcode)

题目链接:https://leetcode-cn.com/problems/find-mode-in-binary-search-tree/难度:简单501. 二叉搜索树中的众数 给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义: 结点左子树中所含结点的值小于等于当前结点的值 结点右子树中所含结点的值大于等于当前结点的值 左子树和右子树都是二叉搜索树例如: 给定 BST [1,null,2,2], 1 \

2020-09-25 08:38:47 93

原创 (112)617. 合并二叉树(leetcode)

题目链接:https://leetcode-cn.com/problems/merge-two-binary-trees/难度:简单617. 合并二叉树 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1: 输入: Tree 1 Tree 2

2020-09-23 10:32:24 58

原创 (111)968. 监控二叉树(leetcode)

题目链接:https://leetcode-cn.com/problems/binary-tree-cameras/难度:困难968. 监控二叉树 给定一个二叉树,我们在树的节点上安装摄像头。 节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。 计算监控树的所有节点所需的最小摄像头数量。示例 1: 输入:[0,0,null,0,0] 输出:1 解释:如图所示,一台摄像头足以监控所有节点。示例 2: 输入:[0,0,null,0,null,0,null,null,0] 输出:

2020-09-22 10:07:18 72

原创 (110)538. 把二叉搜索树转换为累加树(leetcode)

题目链接:https://leetcode-cn.com/problems/convert-bst-to-greater-tree/难度:简单538. 把二叉搜索树转换为累加树给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如: 输入: 原始二叉搜索树: 5 / \ 2 13 输出: 转换为累加树:

2020-09-21 10:00:06 41

空空如也

空空如也

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

TA关注的人

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