- 博客(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
251
原创 leetcode 滑动窗口
感谢微信公众号 labuladong的滑动窗口模板,真的好用,下边是利用模板做了六道题第一题 3. 无重复字符的最长子串3. 无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pww...
2020-11-21 22:14:08
218
1
原创 2020-11-20 147. 对链表进行插入排序
对链表进行插入排序。插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。 重复直到所有输入数据插入完为止。示例 1:输入: 4->...
2020-11-20 21:07:41
113
原创 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
112
原创 2020-11-16 676. 实现一个魔法字典
设计一个使用单词列表进行初始化的数据结构,单词列表中的单词 互不相同 。 如果给出一个单词,请判定能否只将这个单词中一个字母换成另一个字母,使得所形成的新单词存在于你构建的字典中。实现 MagicDictionary 类: MagicDictionary() 初始化对象 void buildDict(String[] dictionary) 使用字符串数组 dictionary 设定该数据结构,dictionary 中的字符串互不相同 bool search(String s...
2020-11-16 16:47:10
152
原创 211. 添加与搜索单词 - 数据结构设计
请你设计一个数据结构,支持 添加新单词 和 查找字符串是否与任何先前添加的字符串匹配 。实现词典类 WordDictionary : WordDictionary() 初始化词典对象 void addWord(word) 将 word 添加到数据结构中,之后可以对它进行匹配 bool search(word) 如果数据结构中存在字符串与 word 匹配,则返回 true ;否则,返回 false 。word 中可能包含一些 '.' ,每个 . 都可以表示任何一个字母。...
2020-11-15 10:21:44
144
原创 2020-11-14 208. 实现 Trie (前缀树)
实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。示例:Trie trie = new Trie();trie.insert("apple");trie.search("apple"); // 返回 truetrie.search("app"); // 返回 falsetrie.startsWith("app"); // 返回 truetrie.insert("app"); trie.search("app")...
2020-11-14 21:26:24
50
原创 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
83
原创 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
53
原创 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
85
原创 2020-11-8 二叉树的序列化
题目描述二叉树被记录为文件的过程叫作二叉树的序列化,通过文件内容重建原来二叉树的过程叫作二叉树的反序列化,给定一颗二叉树,请将该二叉树先序序列化和层序序列化。假设序列化的结果字符串为 str,初始时str = "",遍历二叉树时,遇到null节点,则在str的末尾加上 "#!",否则加上"当前的节点值!"。输入描述:第一行输入两个整数 n 和 root,n 表示二叉树的总节点个数,root 表示二叉树的根节点。以下 n 行每行三个整数 fa,lch,rch,表示 fa 的左儿...
2020-11-08 20:48:46
235
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
139
原创 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
104
原创 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
293
原创 2020-11-04 将单向链表按某值划分为左边小,中间相等,右边大的形式
题目描述给定一个链表,再给定一个整数pivot,请将链表调整为左部分都是值小于pivot的节点,中间部分都是值等于pivot的节点,右边部分都是大于pivot的节点。除此之外,对调整后的节点顺序没有更多要求。输入描述:第一行两个整数 n 和 pivot,n 表示链表的长度。第二行 n 个整数 ai 表示链表的节点。输出描述:请在给定的函数内返回链表的头指针。示例1输入复制5 39 0 4 5 1输出复制1 0 4 5 9...
2020-11-04 14:03:09
434
原创 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
148
原创 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
222
原创 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
108
原创 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
302
原创 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
108
原创 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
58
原创 1160.拼写单词
1160. 拼写单词难度简单116给你一份『词汇表』(字符串数组)words和一张『字母表』(字符串)chars。假如你可以用chars中的『字母』(字符)拼写出words中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写(指拼写词汇表中的一个单词)时,chars中的每个字母都只能用一次。返回词汇表words中你掌握的所有单词的长度之和。示例 1:输入:words = ["cat","bt","hat","tree"], c...
2020-10-24 16:36:28
83
原创 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
106
原创 2020-10-22 763.划分字母区间
763. 划分字母区间难度中等305字符串S由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。示例 1:输入:S = "ababcbacadefegdehijhklij"输出:[9,7,8]解释:划分结果为 "ababcbaca", "defegde", "hijhklij"。每个字母最多出现在一个片段中。像 "ababcbacadefegde", "hijhklij" 的划分是错误的,...
2020-10-22 14:08:15
51
原创 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
36
原创 单调栈模板题 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
128
原创 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
40
原创 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
118
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人