自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 四数之和I和II

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

2020-11-27 15:08:56 374

原创 leetcode 滑动窗口

感谢微信公众号 labuladong的滑动窗口模板,真的好用,下边是利用模板做了六道题 第一题 3. 无重复字符的最长子串 3. 无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 示例1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: "pww...

2020-11-21 22:14:08 346 1

原创 2020-11-20 147. 对链表进行插入排序

对链表进行插入排序。 插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。 每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。 插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。 重复直到所有输入数据插入完为止。 示例 1: 输入: 4->...

2020-11-20 21:07:41 202

原创 2020-11-19 134. 加油站

在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。 说明: 如果题目有解,该答案即为唯一答案。 输入数组均为非空数组,且长度相同。 输入数组中的元素均为非负数。 示例 1: 输入: gas = [1,2,3,4,5] cost...

2020-11-19 18:50:36 181

原创 2020-11-16 676. 实现一个魔法字典

设计一个使用单词列表进行初始化的数据结构,单词列表中的单词 互不相同 。 如果给出一个单词,请判定能否只将这个单词中一个字母换成另一个字母,使得所形成的新单词存在于你构建的字典中。 实现 MagicDictionary 类: MagicDictionary() 初始化对象 void buildDict(String[] dictionary) 使用字符串数组 dictionary 设定该数据结构,dictionary 中的字符串互不相同 bool search(String s...

2020-11-16 16:47:10 247

原创 211. 添加与搜索单词 - 数据结构设计

请你设计一个数据结构,支持 添加新单词 和 查找字符串是否与任何先前添加的字符串匹配 。 实现词典类 WordDictionary : WordDictionary() 初始化词典对象 void addWord(word) 将 word 添加到数据结构中,之后可以对它进行匹配 bool search(word) 如果数据结构中存在字符串与 word 匹配,则返回 true ;否则,返回 false 。word 中可能包含一些 '.' ,每个 . 都可以表示任何一个字母。 ...

2020-11-15 10:21:44 224

原创 2020-11-14 208. 实现 Trie (前缀树)

实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。 示例: Trie trie = new Trie(); trie.insert("apple"); trie.search("apple"); // 返回 true trie.search("app"); // 返回 false trie.startsWith("app"); // 返回 true trie.insert("app"); trie.search("app")...

2020-11-14 21:26:24 113

原创 2020-11-13 328. 奇偶链表

给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。 示例 1: 输入: 1->2->3->4->5->NULL 输出: 1->3->5->2->4->NULL 示例 2: 输入: 2->1->3->5->6-&.

2020-11-13 11:10:14 146

原创 2020-11-12 序列化二叉树

请实现两个函数,分别用来序列化和反序列化二叉树。 示例: 你可以将以下二叉树: 1 / \ 2 3 / \ 4 5 序列化为 "[1,2,3,null,null,4,5]" 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/xu-lie-hua-er-cha-shu-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 自己太菜了,参考的题解 class Codec...

2020-11-12 11:28:13 112

原创 2020-11-11 973. 最接近原点的 K 个点

我们有一个由平面上的点组成的列表 points。需要从中找出 K 个距离原点 (0, 0) 最近的点。 (这里,平面上两点之间的距离是欧几里德距离。) 你可以按任何顺序返回答案。除了点坐标的顺序之外,答案确保是唯一的。 示例 1: 输入:points = [[1,3],[-2,2]], K = 1 输出:[[-2,2]] 解释: (1, 3) 和原点之间的距离为 sqrt(10), (-2, 2) 和原点之间的距离为 sqrt(8), 由于 sqrt(8) < sqrt(10...

2020-11-11 10:39:47 164

原创 2020-11-8 二叉树的序列化

题目描述 二叉树被记录为文件的过程叫作二叉树的序列化,通过文件内容重建原来二叉树的过程叫作二叉树的反序列化,给定一颗二叉树,请将该二叉树先序序列化和层序序列化。 假设序列化的结果字符串为 str,初始时str = "",遍历二叉树时,遇到null节点,则在str的末尾加上 "#!",否则加上"当前的节点值!"。 输入描述: 第一行输入两个整数 n 和 root,n 表示二叉树的总节点个数,root 表示二叉树的根节点。 以下 n 行每行三个整数 fa,lch,rch,表示 fa 的左儿...

2020-11-08 20:48:46 351 1

原创 2020-11-08 判断一棵二叉树是否为搜索树和完全二叉树

题目描述 给定一棵二叉树,已经其中没有重复值的节点,请判断该二叉树是否为搜索二叉树和完全二叉树。 输入描述: 第一行输入两个整数 n 和 root,n 表示二叉树的总节点个数,root 表示二叉树的根节点。 以下 n 行每行三个整数 fa,lch,rch,表示 fa 的左儿子为 lch,右儿子为 rch。(如果 lch 为 0 则表示 fa 没有左儿子,rch同理) ps:节点的标号就是节点的值 输出描述: 第一行输出该二叉树是否为搜索二叉树的答案,如果是则输出 "true",否则输出 .

2020-11-08 12:56:03 217

原创 2020-11-07 面试题 04.06. 后继者

设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。 如果指定节点没有对应的“下一个”节点,则返回null。 示例 1: 输入: root = [2,1,3], p = 1 2 / \ 1 3 输出: 2 示例 2: 输入: root = [5,3,6,2,4,null,null,1], p = 6 5 / \ 3 6 / \ 2 4 / 1 输出: null 来源:力扣(LeetCode) 链接:h...

2020-11-07 17:20:10 191

原创 2020-11-06 在二叉树中找到一个节点的后继节点

题目描述 二叉树中一个节点的后继节点指的是,二叉树的中序遍历的序列中的下一个节点。 输入描述: 第一行输入两个整数 n 和 root,n 表示二叉树的总节点个数,root 表示二叉树的根节点。 以下 n 行每行四个整数 fa,lch,rch,表示 fa 的左儿子为 lch,右儿子为 rch。(如果 lch 为 0 则表示 fa 没有左儿子,rch同理) 最后一行输入要询问的节点 node。 输出描述: 输出一个整数表示答案。(如果 node 是最后一个节点,则输出 0 ) 示例1 输.

2020-11-06 22:17:08 412

原创 2020-11-04 将单向链表按某值划分为左边小,中间相等,右边大的形式

题目描述 给定一个链表,再给定一个整数pivot,请将链表调整为左部分都是值小于pivot的节点,中间部分都是值等于pivot的节点,右边部分都是大于pivot的节点。 除此之外,对调整后的节点顺序没有更多要求。 输入描述: 第一行两个整数 n 和 pivot,n 表示链表的长度。 第二行 n 个整数 ai 表示链表的节点。 输出描述: 请在给定的函数内返回链表的头指针。 示例1 输入 复制 5 3 9 0 4 5 1 输出 复制 1 0 4 5 9 ...

2020-11-04 14:03:09 541

原创 2020-11-4 计算数组的小和

题目描述 数组小和的定义如下: 例如,数组s = [1, 3, 5, 2, 4, 6],在s[0]的左边小于或等于s[0]的数的和为0;在s[1]的左边小于或等于s[1]的数的和为1;在s[2]的左边小于或等于s[2]的数的和为1+3=4;在s[3]的左边小于或等于s[3]的数的和为1; 在s[4]的左边小于或等于s[4]的数的和为1+3+2=6;在s[5]的左边小于或等于s[5]的数的和为1+3+5+2+4=15。所以s的小和为0+1+4+1+6+15=27 给定一个数组s,实现函数返回s的小和.

2020-11-04 13:46:56 261

原创 2020-11-2 之字形打印矩阵

题目描述 给定一个矩阵matrix,按照“之”字形的方式打印这个矩阵,如样例所示。 输入描述: 输入包含多行,第一行包含两个整数n和m(1≤n,m≤200)(1 \leq n,m \leq 200)(1≤n,m≤200),代表矩阵的行数和列数,接下来n行,每行m个整数,代表矩阵matrix(1≤matrix[i][j]≤40000)(1\leq matrix[i][j] \leq 40000)(1≤matrix[i][j]≤40000)。 输出描述: 输出一行 ,代表“之”字形输出的矩阵。 .

2020-11-02 20:33:31 312

原创 2020-11-02 349.两个数组的交集

349. 两个数组的交集 给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4] 果然菜鸡只能做做简单题了。 思路:两个数组的交集,直接先遍历数组一得到数组一中存在的元素,然后遍历数组二,获取重复的元素,但是此时每个元素都是唯一的所以考虑用unordered_set去重。 c...

2020-11-02 13:44:10 176

原创 2020-10-31 54.螺旋矩阵

54. 螺旋矩阵 给定一个包含m x n个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。 示例1: 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] 输出: [1,2,3,6,9,8,7,4,5] 示例2: 输入: [ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12] ] 输出: [1,2,3,4,8,12,11,10,9,5,6,7] 左神方法的的C+...

2020-10-31 12:30:52 388

原创 2020-10-28 345. 反转字符串中的元音字母

345. 反转字符串中的元音字母 编写一个函数,以字符串作为输入,反转该字符串中的元音字母。 示例 1: 输入:"hello" 输出:"holle" 示例 2: 输入:"leetcode" 输出:"leotcede" 提示: 元音字母不包含字母 "y" 。 class Solution { public: string reverseVowels(string s) { unordered_map<char, int> hash {...

2020-10-28 16:03:33 182

原创 2020-10-26 1365.有多少小于当前数字的数字

1365. 有多少小于当前数字的数字 给你一个数组nums,对于其中每个元素nums[i],请你统计数组中比它小的所有数字的数目。 换而言之,对于每个nums[i]你必须计算出有效的j的数量,其中 j 满足j != i 且 nums[j] < nums[i]。 以数组形式返回答案。 示例 1: 输入:nums = [8,1,2,2,3] 输出:[4,0,1,1,3] 解释: 对于 nums[0]=8 存在四个比它小的数字:(1,2,2 和 3)。 对于 nums...

2020-10-26 20:49:05 113

原创 1160.拼写单词

1160. 拼写单词 难度简单116 给你一份『词汇表』(字符串数组)words和一张『字母表』(字符串)chars。 假如你可以用chars中的『字母』(字符)拼写出words中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。 注意:每次拼写(指拼写词汇表中的一个单词)时,chars中的每个字母都只能用一次。 返回词汇表words中你掌握的所有单词的长度之和。 示例 1: 输入:words = ["cat","bt","hat","tree"], c...

2020-10-24 16:36:28 146

原创 2020-10-23 234.回文链表

234. 回文链表 难度简单697 请判断一个链表是否为回文链表。 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否用O(n) 时间复杂度和 O(1) 空间复杂度解决此题? 刚开始还是想到用栈 class Solution { public: bool isPalindrome(ListNode* head) { if(!head) return tru..

2020-10-23 11:15:55 156

原创 2020-10-22 763.划分字母区间

763. 划分字母区间 难度中等305 字符串S由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。 示例 1: 输入:S = "ababcbacadefegdehijhklij" 输出:[9,7,8] 解释: 划分结果为 "ababcbaca", "defegde", "hijhklij"。 每个字母最多出现在一个片段中。 像 "ababcbacadefegde", "hijhklij" 的划分是错误的,...

2020-10-22 14:08:15 104

原创 2020-10-21 925.长键按入

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

2020-10-21 19:33:50 100

原创 单调栈模板题 496.下一个更大的元素

496. 下一个更大元素 I 难度简单289 给定两个没有重复元素的数组nums1和nums2,其中nums1是nums2的子集。找到nums1中每个元素在nums2中的下一个比其大的值。 nums1中数字x的下一个更大元素是指x在nums2中对应位置的右边的第一个比x大的元素。如果不存在,对应位置输出 -1 。 示例 1: 输入: nums1 = [4,1,2], nums2 = [1,3,4,2]. 输出: [-1,3,-1] 解释: ...

2020-10-20 21:07:36 225

原创 2020-10-20 重排链表打卡(143)

143. 重排链表 难度中等366 给定一个单链表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->4->5, 重新排列为 1->5->2->4->3. 思...

2020-10-20 11:46:10 84

原创 2020-10-19 比较含退格的字符串(844题)

给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。 注意:如果对空文本输入退格字符,文本继续为空。 示例 1: 输入:S = "ab#c", T = "ad#c" 输出:true 解释:S 和 T 都会变成 “ac”。 示例 2: 输入:S = "ab##", T = "c#d#" 输出:true 解释:S 和 T 都会变成 “”。 示例 3: 输入:S = "a##c", T = "#a#c" 输出:true 解释:S ..

2020-10-19 20:38:51 197

空空如也

空空如也

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

TA关注的人

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