LeetCode记录
XD1998
但行好事 莫问前程
展开
-
【LeetCode】分类刷题 之 栈和队列
STL栈:std::stack<\int> S;S.top() S.empty() S.push(x) S.pop() S.size()队列:std:queue<\int> Q;Q.empty()、Q.front()、Q.back()、Q.pop()、Q.push()、Q.size()题225 用队列实现栈用时:0ms 100% 内存 7MB 100%cl...原创 2020-04-06 20:46:55 · 147 阅读 · 0 评论 -
【LeetCode】4月5日打卡-Day21-最大子序和问题
描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。题解方法1 贪心法 O(n)如果sum始终大于0,则一直向后...原创 2020-04-05 12:17:13 · 88 阅读 · 0 评论 -
【LeetCode】4月4日打卡-Day20-接雨水
描述给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6题解思路:双指针分别从左右两边遍...原创 2020-04-04 09:42:19 · 205 阅读 · 0 评论 -
【LeetCode】4月3日打卡-Day19-字符串转整数
描述请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在...原创 2020-04-03 22:45:58 · 144 阅读 · 0 评论 -
【LeetCode】4月2日打卡-Day18-矩阵操作
题1 生命游戏描述根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少...原创 2020-04-02 17:23:09 · 160 阅读 · 0 评论 -
【LeetCode】4月1日打卡-Day17-括号匹配/嵌套深度
题1 有效括号的嵌套深度题解要求划分出使得最大嵌套深度最小的分组,我们首先得知道如何计算嵌套深度。我们可以通过栈实现括号匹配来计算:维护一个栈 s,从左至右遍历括号字符串中的每一个字符:如果当前字符是 (,就把 ( 压入栈中,此时这个 ( 的嵌套深度为栈的高度;如果当前字符是 ),此时这个 ) 的嵌套深度为栈的高度,随后再从栈中弹出一个 (。例如:括号序列 ( ( ) ( ( )...原创 2020-04-02 17:34:32 · 130 阅读 · 0 评论 -
【LeetCode】3月31日打卡-Day16-数组排序算法汇总
排序算法一览快排插入排序希尔排序桶排序计数排序归并排序桶排序class Solution { public int[] sortArray(int[] nums) { if(nums.length <=1)return nums; qSort(nums,0,nums.length-1); selectSort(nums); ...原创 2020-03-31 11:57:19 · 139 阅读 · 0 评论 -
【LeetCode】3月30日打卡-Day15
题1描述0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。示例 1:输入: n = 5, m = 3输出: 3示例 2:输入: n = 10, m = 17输出: 2...原创 2020-03-30 09:26:54 · 77 阅读 · 0 评论 -
【LeetCode】3月29日打卡-Day14-BFS
题1 地图分析描述你现在手里有一份大小为 N x N 的『地图』(网格) grid,上面的每个『区域』(单元格)都用 0 和 1 标记好了。其中 0 代表海洋,1 代表陆地,你知道距离陆地区域最远的海洋区域是是哪一个吗?请返回该海洋区域到离它最近的陆地区域的距离。我们这里说的距离是『曼哈顿距离』( Manhattan Distance):(x0, y0) 和 (x1, y1) 这两个区域之...原创 2020-03-29 14:02:19 · 78 阅读 · 0 评论 -
【LeetCode】3月28日打卡-Day13
题1 单词的压缩编码描述给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A。例如,如果这个列表是 [“time”, “me”, “bell”],我们就可以将其表示为 S = “time#bell#” 和 indexes = [0, 2, 5]。对于每一个索引,我们可以通过从字符串 S 中索引的位置开始读取字符串,直到 “#” 结束,来恢复我们之前的单词列表。那...原创 2020-03-28 12:42:28 · 174 阅读 · 0 评论 -
【LeetCode】3月27日打卡-Day12
题1描述给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:每组都有 X 张牌。组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回 true。示例 1:输入:[1,2,3,4,4,3,2,1]输出:true解释:可行的分组是 [1,1],[2,2],[3,3],[4,4]示例 2:输入:...原创 2020-03-27 08:57:21 · 76 阅读 · 0 评论 -
【LeetCode】3月26日打卡-Day11
题1 车的可用捕获量描述在一个 8 x 8 的棋盘上,有一个白色车(rook)。也可能有空方块,白色的象(bishop)和黑色的卒(pawn)。它们分别以字符 “R”,“.”,“B” 和 “p” 给出。大写字符表示白棋,小写字符表示黑棋。车按国际象棋中的规则移动:它选择四个基本方向中的一个(北,东,西和南),然后朝那个方向移动,直到它选择停止、到达棋盘的边缘或移动到同一方格来捕获该方格上颜...原创 2020-03-26 13:24:58 · 86 阅读 · 0 评论 -
【LeetCode】3月25日打卡-Day10
题1 三维形体的表面积描述在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。请你返回最终形体的表面积。示例 1:输入:[[2]]输出:10示例 2:输入:[[1,2],[3,4]]输出:34示例 3:输入:[[1,0],[0,2]]输出:16示例 4:输...原创 2020-03-25 11:28:42 · 75 阅读 · 0 评论 -
【LeetCode】3月24日打卡-Day9
题1 按摩师描述一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。注意:本题相对原题稍作改动示例 1:输入: [1,2,3,1]输出: 4解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。示例 2:...原创 2020-03-25 10:49:51 · 109 阅读 · 0 评论 -
【LeetCode】3月23日打卡-Day8
题1 链表的中间结点描述给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val ...原创 2020-03-23 09:08:33 · 78 阅读 · 0 评论 -
【LeetCode】3月22日打卡-Day7
题1描述给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1。返回使 A 中的每个值都是唯一的最少操作次数。示例 1:输入:[1,2,2]输出:1解释:经过一次 move 操作,数组将变为 [1, 2, 3]。示例 2:输入:[3,2,1,2,1,7]输出:6解释:经过 6 次 move 操作,数组将变为 [3, 4, 1, 2, 5, 7]。可以...原创 2020-03-22 10:09:27 · 148 阅读 · 0 评论 -
【LeetCode】3月21日打卡-Day6
题1 水壶问题描述有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水。你允许:装满任意一个水壶清空任意一个水壶从一个水壶向另外一个水壶倒水,直到装满或者倒空示例 1: (From the famous “Die Hard” example)输入: x =...原创 2020-03-21 09:39:27 · 153 阅读 · 1 评论 -
【LeetCode】3月20日打卡-Day5
题1 最小的k个数描述输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1输出:[0]限制:0 <= k <= arr.length...原创 2020-03-20 09:57:01 · 74 阅读 · 0 评论 -
【LeetCode】3月19日打卡-Day4
题1 最长回文串描述给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入:“abccccdd”输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。方法1 用HashMap思路:自己想的方...原创 2020-03-19 08:58:11 · 107 阅读 · 0 评论 -
【LeetCode】3月18日打卡-Day3
题1 无重复字符的最长子串描述方法1 暴力破解思路:定义allUnique方法,查看字符串s的每个子串,是否存在相同的字符,用start和end记录子串的位置。对于s串用两层for循环依次访问所有子串,用result记录结果,即不含相同字符的子串中最长的子串的长度。这种方法对于过长的字符串s会导致时间过长,无法通过,算法的时间复杂度为O(n3)O(n^3)O(n3)class Solut...原创 2020-03-18 10:13:54 · 155 阅读 · 1 评论 -
【LeetCode】3月17日打卡-Day2
题1 拼写单词描述给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写时,chars 中的每个字母都只能用一次。返回词汇表 words 中你掌握的所有单词的 长度之和。示例 1:输入:words = [“cat...原创 2020-03-17 19:23:48 · 132 阅读 · 0 评论 -
【LeetCode】3月16日打卡-Day1
题1 字符串压缩描述字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。示例1:输入:“aabcccccaaa”输出:“a2b1c5a3”示例2:输入:“abbccd”输出:“abbccd”解释:“...原创 2020-03-17 18:09:23 · 106 阅读 · 0 评论