LeetCode
hzasrd
这个作者很懒,什么都没留下…
展开
-
LeetCode 98. 验证二叉搜索树
验证二叉搜索树题目:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。解法一:中序遍历序列是递增,则为二叉搜索树。/** * Definition for a binary tree node. * struct Tree...原创 2020-05-05 19:39:48 · 318 阅读 · 0 评论 -
LeetCode45 跳跃游戏II
跳跃游戏II题目:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。说明:假设你总是可以到达...原创 2020-05-04 18:16:11 · 279 阅读 · 0 评论 -
面试题 03.02. 栈的最小值
面试题 03.02. 栈的最小值请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push、pop和min操作的时间复杂度必须为O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minSt...原创 2020-04-30 17:22:25 · 211 阅读 · 0 评论 -
面试题 02.08. 环路检测
面试题 02.08. 环路检测给定一个有环链表,实现一个算法返回环路的开头节点。有环链表的定义:在链表中某个节点的next元素指向在它前面出现过的节点,则表明该链表存在环路。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:...原创 2020-04-28 12:26:28 · 224 阅读 · 0 评论 -
面试题 02.07. 链表相交
面试题 02.07. 链表相交给定两个(单向)链表,判定它们是否相交并返回交点。请注意相交的定义基于节点的引用,而不是基于节点的值。换句话说,如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], sk...原创 2020-04-27 12:22:19 · 265 阅读 · 0 评论 -
面试题 02.06. 回文链表
面试题 02.06. 回文链表编写一个函数,检查输入的链表是否是回文的。示例 1:输入: 1->2输出: false 示例 2:输入: 1->2->2->1输出: true 进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?题解:将后半部分的链表进行反转,然后比较反转后的后半部分链表和前半部分链表...原创 2020-04-26 13:23:45 · 192 阅读 · 0 评论 -
面试题 02.05. 链表求和
面试题 02.05. 链表求和给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并用链表形式返回结果。示例:输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295输出:2 -> 1 -> 9,即912模拟大整数加法,链表实现...原创 2020-04-24 12:52:33 · 324 阅读 · 0 评论 -
面试题 02.03. 删除中间节点
面试题 02.03. 删除中间节点实现一种算法,删除单向链表中间的某个节点(除了第一个和最后一个节点,不一定是中间节点),假定你只能访问该节点。示例:输入:单向链表a->b->c->d->e->f中的节点c结果:不返回任何数据,但该链表变为a->b->d->e->f也就是把给定的那个节点删去。解法一(效率低):...原创 2020-04-23 13:36:13 · 190 阅读 · 0 评论 -
面试题 02.02. 返回倒数第 k 个节点
面试题 02.02. 返回倒数第 k 个节点实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。注意:本题相对原题稍作改动示例:输入: 1->2->3->4->5 和 k = 2输出: 4说明:给定的k保证是有效的。解法一:先遍历一遍链表求出结点的总个数n,再遍历一遍,返回第n-k+1个结点的值。/** * De...原创 2020-04-23 12:09:32 · 178 阅读 · 0 评论 -
面试题 02.01. 移除重复节点
面试题 02.01. 移除重复节点编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1: 输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3]示例2: 输入:[1, 1, 1, 1, 2] 输出:[1, 2]提示:链表长度在[0, 20000]范围内。 链表元素在[0, 20000]范围内。题解:指针p遍历整个链表,判断...原创 2020-04-22 13:09:32 · 175 阅读 · 0 评论 -
面试题 01.07. 旋转矩阵
面试题 01.07. 旋转矩阵给你一幅由N × N矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]...原创 2020-04-19 21:25:32 · 198 阅读 · 0 评论 -
面试题 01.06. 字符串压缩
面试题 01.06. 字符串压缩难度简单37收藏分享切换为英文关注反馈字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。示例1: 输入:"aabcccccaaa" 输出:"a2b1c5a3"...原创 2020-04-18 22:48:18 · 162 阅读 · 0 评论 -
面试题 01.03. URL化
面试题 01.03. URL化难度简单6URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)示例1: 输入:"Mr John Smith ", 13 输出:"Mr%20John%20Smith"示例2: 输入:" ...原创 2020-04-15 12:33:17 · 156 阅读 · 0 评论 -
面试题 01.01. 判定字符是否唯一
解题思路由于题目提示可以不用额外的数据结构解题,那么我们应该抛弃直观上的用set解题的方法。双重循环的暴力求解由于O(n^2)的时间复杂度,也不应该考虑。位运算方法的思路本质上,跟使用一个bool数组来记录astr的每一位是否已经出现过的思路是一样的。基于bool数组的方法:由于题目没有明确说明,根据示例我判断字符串中出现的字符应该在['a','z']之间,实践证明确实如此。基于这个...原创 2020-04-13 18:22:07 · 206 阅读 · 0 评论 -
面试题09. 用两个栈实现队列
面试题09. 用两个栈实现队列难度简单10用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"]...原创 2020-02-18 20:15:26 · 181 阅读 · 0 评论 -
面试题07. 重建二叉树
面试题07. 重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7限制:0 ...原创 2020-02-18 11:44:36 · 161 阅读 · 1 评论 -
面试题06. 从尾到头打印链表
面试题06. 从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000解法一:递归class Solution {public: vector<int> reversePrint(ListNode...原创 2020-02-18 11:14:01 · 173 阅读 · 0 评论 -
面试题04. 二维数组中的查找
面试题04. 二维数组中的查找在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16...原创 2020-02-14 23:07:14 · 142 阅读 · 0 评论 -
面试题03. 数组中重复的数字
面试题03. 数组中重复的数字在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 限制:2 <= n <= 100000题解一:哈希。将数...原创 2020-02-13 23:03:13 · 134 阅读 · 1 评论