Leetcode 题解
43581143
一个热爱技术的coder
展开
-
Leetcode 162场周赛
纪念我的第一次AK,这次题目还是比较简单的,全国也有两百多个人AK,话不多说,下面来看题第一题 奇数值单元格的数目给你一个 n 行 m 列的矩阵,最开始的时候,每个单元格中的值都是 0。另有一个索引数组 indices,indices[i] = [ri, ci] 中的 ri 和 ci 分别表示指定的行和列(从 0 开始编号)。你需要将每对 [ri, ci] 指定的行和列上的所有单元格的值加 1...原创 2019-11-10 16:37:05 · 125 阅读 · 0 评论 -
Leetcode 785. 判断二分图(中等)
785. 判断二分图给定一个无向图graph,当这个图为二分图时返回true。如果我们能将一个图的节点集合分割成两个独立的子集A和B,并使图中的每一条边的两个节点一个来自A集合,一个来自B集合,我们就将这个图称为二分图。graph将会以邻接表方式给出,graph[i]表示图中与节点i相连的所有节点。每个节点都是一个在0到graph.length-1之间的整数。这图中没有自环和平行边: gra...原创 2019-06-30 11:38:04 · 135 阅读 · 0 评论 -
Leetcode 802. 找到最终的安全状态(中等)
802. 找到最终的安全状态在有向图中, 我们从某个节点和每个转向处开始, 沿着图的有向边走。 如果我们到达的节点是终点 (即它没有连出的有向边), 我们停止。现在, 如果我们最后能走到终点,那么我们的起始节点是最终安全的。 更具体地说, 存在一个自然数 K, 无论选择从哪里开始行走, 我们走了不到 K 步后必能停止在一个终点。哪些节点最终是安全的? 结果返回一个有序的数组。该有向图有 ...原创 2019-06-30 11:40:56 · 163 阅读 · 0 评论 -
Leetcode 307. 区域和检索 - 数组可修改(中等)
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...原创 2019-06-30 11:43:35 · 127 阅读 · 0 评论 -
Leetcode 35. 搜索插入位置(简单)
35. 搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例1输入: [1,3,5,6], 5输出: 2示例2输入: [1,3,5,6], 2输出: 1示例3输入: [1,3,5,6], 7输出: 4示例4输入: [1,3,5,6], 0输出: ...原创 2019-06-30 11:46:02 · 110 阅读 · 0 评论 -
Leetcode 69. x 的平方根(简单)
69. x 的平方根实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例1输入: 4输出: 2示例2输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。代码class Solution {public: ...原创 2019-06-30 11:48:47 · 62 阅读 · 0 评论 -
Leetcode 34. 在排序数组中查找元素的第一个和最后一个位置(中等)
34. 在排序数组中查找元素的第一个和最后一个位置给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例1输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例2输入: nu...原创 2019-06-30 11:50:26 · 70 阅读 · 0 评论 -
Leetcode 29. 两数相除(中等)
29. 两数相除给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。示例1输入: dividend = 10, divisor = 3输出: 3示例2输入: dividend = 7, divisor = -3输出: -2提示: ...原创 2019-06-30 11:59:58 · 176 阅读 · 0 评论 -
Leetcode 1027. 最长等差数列(中等)
1027. 最长等差数列给定一个整数数组 A,返回 A 中最长等差子序列的长度。回想一下,A 的子序列是列表 A[i_1], A[i_2], …, A[i_k] 其中 0 <= i_1 < i_2 < … < i_k <= A.length - 1。并且如果 B[i+1] - B[i]( 0 <= i < B.length - 1) 的值都相同,那么序...原创 2019-06-30 12:06:41 · 355 阅读 · 0 评论 -
Leetcode 779. 第K个语法符号(中等)
779. 第K个语法符号在第一行我们写上一个 0。接下来的每一行,将前一行中的0替换为01,1替换为10。给定行数 N 和序数 K,返回第 N 行中第 K个字符。(K从1开始)示例1输入: N = 1, K = 1输出: 0输入: N = 2, K = 1输出: 0输入: N = 2, K = 2输出: 1输入: N = 4, K = 5输出: 1解释:第一行: 0...原创 2019-06-30 12:11:20 · 157 阅读 · 0 评论 -
Leetcode 997. 找到小镇的法官(简单)
997. 找到小镇的法官在一个小镇里,按从 1 到 N 标记了 N 个人。传言称,这些人中有一个是小镇上的秘密法官。如果小镇的法官真的存在,那么:小镇的法官不相信任何人。每个人(除了小镇法官外)都信任小镇的法官。只有一个人同时满足属性 1 和属性 2 。给定数组 trust,该数组由信任对 trust[i] = [a, b] 组成,表示标记为 a 的人信任标记为 b 的人。如果小镇存...原创 2019-06-30 11:35:14 · 83 阅读 · 0 评论 -
Leetcode 133. 克隆图(中等)
133. 克隆图给定无向连通图中一个节点的引用,返回该图的深拷贝(克隆)。图中的每个节点都包含它的值 val(Int) 和其邻居的列表(list[Node])。示例输入:{"$id":"1","neighbors":[{"$id":"2","neighbors":[{"$ref":"1"},{"$id":"3","neighbors":[{"$ref":"2"},{"$id":"4","n...原创 2019-06-30 11:32:26 · 89 阅读 · 0 评论 -
Leetcode 1016. 子串能表示从 1 到 N 数字的二进制串(中等)
1023.驼峰式匹配如果我们可以将小写字母插入模式串 pattern 得到待查询项 query,那么待查询项与给定模式串匹配。(我们可以在任何位置插入每个字符,也可以插入 0 个字符。)给定待查询列表 queries,和模式串 pattern,返回由布尔值组成的答案列表 answer。只有在待查项 queries[i] 与模式串 pattern 匹配时, answer[i] 才为 true,否...原创 2019-06-30 10:50:13 · 123 阅读 · 0 评论 -
Leetcode 1023.驼峰式匹配(中等)
1023.驼峰式匹配如果我们可以将小写字母插入模式串 pattern 得到待查询项 query,那么待查询项与给定模式串匹配。(我们可以在任何位置插入每个字符,也可以插入 0 个字符。)给定待查询列表 queries,和模式串 pattern,返回由布尔值组成的答案列表 answer。只有在待查项 queries[i] 与模式串 pattern 匹配时, answer[i] 才为 true,否...原创 2019-06-30 11:02:23 · 206 阅读 · 0 评论 -
Leetcode 121. 买卖股票的最佳时机(中等)
121.买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例1输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 ...原创 2019-06-30 11:05:55 · 106 阅读 · 0 评论 -
Leetcode 64. 最小路径和(中等)
64. 最小路径和给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。代码class Solution {public: int minPathSum(...原创 2019-06-30 11:09:39 · 69 阅读 · 0 评论 -
Leetcode 650. 只有两个键的键盘(中等)
650. 只有两个键的键盘最初在一个记事本上只有一个字符 ‘A’。你每次可以对这个记事本进行两种操作:Copy All (复制全部) : 你可以复制这个记事本中的所有字符(部分的复制是不允许的)。Paste (粘贴) : 你可以粘贴你上一次复制的字符。给定一个数字 n 。你需要使用最少的操作次数,在记事本中打印出恰好 n 个 ‘A’。输出能够打印出 n 个 ‘A’ 的最少操作次数。示例...原创 2019-06-30 11:12:33 · 61 阅读 · 0 评论 -
Leetcode 169. 求众数(简单)
169. 求众数给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例1输入: [3,2,3]输出: 3示例2输入: [2,2,1,1,1,2,2]输出: 2代码class Solution {public: int majorityElement(vector...原创 2019-06-30 11:17:09 · 76 阅读 · 0 评论 -
Leetcode 973. 最接近原点的 K 个点(中等)
973. 最接近原点的 K 个点我们有一个由平面上的点组成的列表 points。需要从中找出 K 个距离原点 (0, 0) 最近的点。(这里,平面上两点之间的距离是欧几里德距离。)你可以按任何顺序返回答案。除了点坐标的顺序之外,答案确保是唯一的。示例1输入:points = [[1,3],[-2,2]], K = 1输出:[[-2,2]]解释:(1, 3) 和原点之间的距离为 s...原创 2019-06-30 11:21:00 · 118 阅读 · 0 评论 -
Leetcode 327. 区间和的个数(困难)
327. 区间和的个数给定一个整数数组 nums,返回区间和在 [lower, upper] 之间的个数,包含 lower 和 upper。区间和 S(i, j) 表示在 nums 中,位置从 i 到 j 的元素之和,包含 i 和 j (i ≤ j)。说明:最直观的算法复杂度是 O(n2) ,请在此基础上优化你的算法。示例输入: nums = [-2,5,-1], lower = -2...原创 2019-06-30 11:23:06 · 340 阅读 · 0 评论 -
Leetcode 623. 在二叉树中增加一行(中等)
623. 在二叉树中增加一行给定一个二叉树,根节点为第1层,深度为 1。在其第 d 层追加一行值为 v 的节点。添加规则:给定一个深度值 d (正整数),针对深度为 d-1 层的每一非空节点 N,为 N 创建两个值为 v 的左子树和右子树。将 N 原先的左子树,连接为新节点 v 的左子树;将 N 原先的右子树,连接为新节点 v 的右子树。如果 d 的值为 1,深度 d - 1 不存在,则创...原创 2019-06-30 11:29:26 · 99 阅读 · 0 评论 -
Leetcode 1.两数之和
1.两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。示例给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]代码class Solution {public: vector<i...原创 2019-06-30 10:33:37 · 74 阅读 · 0 评论