- 博客(44)
- 收藏
- 关注
原创 Leetcode:200. 岛屿数量
题目:给定一个由'1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出:1示例2:输入:11000110000010000011输出: 3AC代码:广度优先class ...
2020-03-24 17:37:01
148
原创 Leetcode:面试题32 - III. 从上到下打印二叉树 III
题目:请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [20,9], [15,7...
2020-03-23 17:11:39
217
原创 Letcode:199. 二叉树的右视图
题目:给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入:[1,2,3,null,5,null,4]输出:[1, 3, 4]解释: 1 <---/ \2 3 <---\ \ 5 4 <---AC代码:c...
2020-03-23 13:54:10
142
原创 Leetcode:130. 被围绕的区域
题目:给定一个二维的矩阵,包含'X'和'O'(字母 O)。找到所有被 'X' 围绕的区域,并将这些区域里所有的'O' 用 'X' 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的'O'都不...
2020-03-23 13:13:35
132
原创 Leetcode:103. 二叉树的锯齿形层次遍历
题目:给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[ [3], [20,9], [15,7]]AC代码:clas...
2020-03-23 10:08:11
114
原创 Leetcode:876. 链表的中间结点
题目:给定一个带有头结点head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, an...
2020-03-23 08:36:25
111
原创 Leetcode:409. 最长回文串
题目:给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如"Aa"不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入:"abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。AC代码:class Solutio...
2020-03-19 19:06:55
107
原创 Leetcode:面试题57. 和为s的两个数字
题目:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例 1:输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]示例 2:输入:nums = [10,26,30,31,47,60], target = 40输出:[10,30] 或者 [30,...
2020-03-18 17:45:03
137
原创 Leetcode:169. 多数元素
题目:给定一个大小为n的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入: [3,2,3]输出: 3示例2:输入: [2,2,1,1,1,2,2]输出: 2AC代码:摩尔投票算法class Solution { public int ma...
2020-03-18 17:41:05
189
原创 Leetcode:53. 最大子序和
题目:给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。AC代码:int maxSubArray(int* nums, int numsSize) { int max = 0; int...
2020-03-18 17:27:35
130
原创 Leetcode:面试题21. 调整数组顺序使奇数位于偶数前面
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums =[1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。AC代码:class Solution { public int[] exchange(int[] nums) { ...
2020-03-16 19:26:22
124
原创 Leetcode:面试题 01.06. 字符串压缩
题目:字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。示例1:输入:"aabcccccaaa"输出:"a2b1c5a3"示例2:输入:"abbccd"输出:"abbccd"解释:"...
2020-03-16 19:21:13
628
原创 Leetcode:695. 岛屿的最大面积
题目:给定一个包含了一些 0 和 1的非空二维数组grid, 一个岛屿是由四个方向 (水平或垂直) 的1(代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],...
2020-03-15 09:07:39
116
原创 Leetcode:874. 模拟行走机器人
题目:机器人在一个无限大小的网格上行走,从点(0, 0) 处开始出发,面向北方。该机器人可以接收以下三种类型的命令:-2:向左转90 度-1:向右转 90 度1 <= x <= 9:向前移动x个单位长度在网格上有一些格子被视为障碍物。第 i个障碍物位于网格点 (obstacles[i][0], obstacles[i][1])如果机器人试图走到障碍物上...
2020-03-12 19:00:37
151
原创 Leetcode:859. 亲密字符串
题目:给定两个由小写字母构成的字符串A和B,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回true;否则返回 false 。示例 1:输入: A = "ab", B = "ba"输出: true示例 2:输入: A = "ab", B = "ab"输出: false示例 3:输入: A = "aa", B = "aa"输出: true...
2020-03-12 18:57:01
105
原创 Leetcode:1071. 字符串的最大公因子
题目:对于字符串S 和T,只有在 S = T + ... + T(T与自身连接 1 次或多次)时,我们才认定“T 能除尽 S”。返回最长字符串X,要求满足X 能除尽 str1 且X 能除尽 str2。示例 1:输入:str1 = "ABCABC", str2 = "ABC"输出:"ABC"示例 2:输入:str1 = "ABABAB", str2 = "ABA...
2020-03-12 11:00:25
120
原创 Leetcode: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]]...
2020-03-11 18:22:34
110
原创 Leetcode:153. 寻找旋转排序数组中的最小值
题目:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7] 可能变为[4,5,6,7,0,1,2])。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1示例 2:输入: [4,5,6,7,0,1,2]输出: 0AC代码:二分查找int findMin...
2020-03-11 18:19:53
101
原创 Leetcode:173. 二叉搜索树迭代器
题目:实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。调用 next() 将返回二叉搜索树中的下一个最小的数。示例:BSTIterator iterator = new BSTIterator(root);iterator.next(); // 返回 3iterator.next(); // 返回 7iterator.hasNext(); // ...
2020-03-11 18:16:29
116
原创 Leetcode:59. 螺旋矩阵 II
题目:给定一个正整数n,生成一个包含 1 到n2所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]AC代码:class Solution {public: vector<vector<int>> generateMatrix(in...
2020-03-10 22:30:02
111
原创 Leetcode:690. 员工的重要性
题目:给定一个保存员工信息的数据结构,它包含了员工唯一的id,重要度和 直系下属的id。比如,员工1是员工2的领导,员工2是员工3的领导。他们相应的重要度为15, 10, 5。那么员工1的数据结构是[1, 15, [2]],员工2的数据结构是[2, 10, [3]],员工3的数据结构是[3, 5, []]。注意虽然员工3也是员工1的一个下属,但是由于并不是直系下属,因此没有体现在员工1的...
2020-03-10 17:05:54
148
原创 Leetcode:543. 二叉树的直径
题目:给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回3, 它的长度是路径 [4,2,1,3] 或者[5,2,1,3]。注意:两结点之间的路径长...
2020-03-10 15:54:04
105
原创 Leetcode:623在二叉树中增加一行
题目:给定一个二叉树,根节点为第1层,深度为 1。在其第d层追加一行值为v的节点。添加规则:给定一个深度值 d (正整数),针对深度为 d-1 层的每一非空节点 N,为 N 创建两个值为v的左子树和右子树。将N 原先的左子树,连接为新节点v 的左子树;将N 原先的右子树,连接为新节点v 的右子树。如果 d 的值为 1,深度 d - 1 不存在,则创建一个新的根节...
2020-03-09 17:06:35
75
原创 Leetcode94. 二叉树的中序遍历
题目:给定一个二叉树,返回它的中序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]AC代码:使用迭代算法class Solution {public: vector<int> inorderTraversal(TreeNode* root) { vector...
2020-03-09 17:01:30
99
原创 Leetcode:1161. 最大层内元素和
题目:难度中等8收藏分享切换为英文关注反馈给你一个二叉树的根节点root。设根节点位于二叉树的第1层,而根节点的子节点位于第2层,依此类推。请你找出层内元素之和最大的那几层(可能只有一层)的层号,并返回其中最小的那个。示例:输入:[1,7,0,7,-8,null,null]输出:2解释:第 1 层各元素之和为 1,第 2 层各元素之和为 7 + ...
2020-03-08 19:25:31
110
原创 Leetcode:114. 二叉树展开为链表
题目:给定一个二叉树,原地将它展开为链表。例如,给定二叉树 1 / \ 2 5/ \ \3 4 6将其展开为:1\ 2 \ 3 \ 4 \ 5 \ 6AC代码void flatten(struct TreeNode* ro...
2020-03-08 19:18:22
89
原创 Leetcode:116. 填充每个节点的下一个右侧节点指针
题目:给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有next ...
2020-03-08 19:14:12
112
原创 Leetcode:978最长湍流子数组
题目:当 A的子数组A[i], A[i+1], ..., A[j]满足下列条件时,我们称其为湍流子数组:若i <= k < j,当 k为奇数时,A[k] > A[k+1],且当 k 为偶数时,A[k] < A[k+1];或 若i <= k < j,当 k 为偶数时,A[k] > A[k+1],且当 k为奇数时,A[k] <...
2020-03-08 19:07:18
106
原创 Leetocde:210课程表 II
题目:现在你总共有 n 门课需要选,记为0到n-1。在选修某些课程之前需要一些先修课程。例如,想要学习课程 0 ,你需要先完成课程1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回一种就可以了。如果不可能完成所有课程,返回一个空数组。示例1:输入: 2, [[1,...
2020-03-07 19:05:32
110
原创 Leetcode207:课程表
题目:现在你总共有 n 门课需要选,记为0到n-1。在选修某些课程之前需要一些先修课程。例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,判断是否可能完成所有课程的学习?示例 1:输入: 2, [[1,0]]输出: true解释:总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。所以...
2020-03-07 19:02:39
196
原创 Leetcode:307. 区域和检索 - 数组可修改
题目:给定一个整数数组 nums,求出数组从索引i到j(i≤j) 范围内元素的总和,包含i,j两点。update(i, val) 函数可以通过将下标为i的数值更新为val,从而对数列进行修改。示例:Given nums = [1, 3, 5]sumRange(0, 2) -> 9update(1, 2)sumRange(0, 2) -&g...
2020-03-06 16:20:17
114
原创 Leetcode面试题57 - II. 和为s的连续正数序列
题目:输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例 1:输入:target = 9输出:[[2,3,4],[4,5]]示例 2:输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]AC代码:滑动窗口算法class...
2020-03-06 15:55:33
188
原创 Leetcode994:腐烂的橘子
题目:在给定的网格中,每个单元格可以有以下三个值之一:值0代表空单元格;值1代表新鲜橘子;值2代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回-1。示例1:输入:[[2,1,1],[1,1,0],[0,1,1]]输出:4示例 2:输入:[...
2020-03-05 22:43:18
126
原创 计蒜客习题:区间整数操作
题目:给出 N 个整数 A1,A2,…,AN,你需要处理区间加,区间求和。输入格式第一行两个整数 N 和 Q (1≤N,Q≤10^5)。第二行 N 个整数,表示 A1,A2…AN(∣Ai∣≤10^9)的初始值。接下来 Q 行,每行一个操作:C a b c,表示 Aa,Aa+1…Ab 每个数加 c (∣c∣≤10000)。Q a b,表示询问 Aa,Aa+1…Ab 的和,...
2020-03-05 22:38:01
279
原创 计蒜客习题:帕吉的肉钩
题目:在 DotA 游戏中,帕吉的肉钩是很多英雄最害怕的东西。钩子由连续若干段的等长金属棒制成。现在帕吉对钩子由一些操作:我们将金属棒 1~n 依次编号,帕吉可以把编号 x~y 的金属棒变成铜棒、银棒、金棒。每段铜棒的价值是 1;每段银棒的价值是 2;每段金棒的价值是 3。肉钩的总价值是 n 段金属棒价值之和。帕吉想知道若干操作以后钩子的总价值。输入格式第一行一个整...
2020-03-03 19:06:26
265
原创 计蒜客习题:公告板
问题:蒜厂有一个 h×w 的矩形公告板,其中 h 是高度,w 是宽度。现在有若干张 1×Wi 的公告, Wi 是宽度,公告只能横着放,即高度为 1 的边垂直于水平面,且不能互相有重叠,每张公告都要求尽可能的放在最上面的合法的位置上。若可以放置,输出每块可放置的位置的行号;若不存在,输出 −1。行号由上至下分别为 1,2,…,h。输入格式第一行三个整数 h,w,n (1≤h,w...
2020-03-03 19:04:00
248
原创 计蒜客习题:最甜的苹果
题目:蒜头君有很多苹果,每个苹果都有对应的甜度值。蒜头君现在想快速知道从第 i 个苹果到第 j 个苹果中,最甜的甜度值是多少。因为存放时间久了,有的苹果会变甜,有的苹果会因为腐烂而变得不甜,所以蒜头君有时候还需要修改第 iii 个苹果的甜度值。输入格式第一行输入两个正整数N,M(05 61 2 3 4 5Q 1 5U 3 6Q 3 4Q 4 5U 2 9Q 1...
2020-03-03 19:02:02
213
原创 计蒜客习题:斑点蛇
题目:有一种神奇斑点蛇,蛇如其名,全身都是斑点,斑点数量可以任意改变。有一天,蒜头君十分的无聊,开始数蛇上的斑点。假设这条蛇的长度是Ncm,蒜头君已经数完开始时蛇身的第icm上有ai个斑点。现在蒜头君想知道这条斑点蛇的任意区间的蛇身上一共有多少个斑点。这好像是一个很容易的事情,但是这条蛇好像是和蒜头君过不去,总是刻意的改变蛇身上的斑点数量。于是,蒜头君受不了了,加上蒜头君有密集型恐惧症。...
2020-03-03 18:59:40
122
原创 Leetcode:3,面试题48. 最长不含重复字符的子字符串
题目:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字...
2020-03-02 22:48:09
153
原创 Leetcode:1052. 爱生气的书店老板
题目:今天,书店老板有一家店打算试营业customers.length分钟。每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开。在某些时候,书店老板会生气。 如果书店老板在第 i 分钟生气,那么 grumpy[i] = 1,否则 grumpy[i] = 0。 当书店老板生气时,那一分钟的顾客就会不满意,不生气则他们是满意的。书店老板知道一个...
2020-03-02 22:43:14
159
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人