Leetcode刷题记录
Untara
小白成长日记
展开
-
139. 单词拆分
给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。示例 2:输入: s = "applepenapple", wordDi.原创 2021-02-19 16:43:27 · 171 阅读 · 0 评论 -
3. 无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长...原创 2021-01-25 19:36:16 · 93 阅读 · 0 评论 -
236. 二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树:root =[3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3解释: 节点 5...原创 2020-11-09 20:57:54 · 120 阅读 · 0 评论 -
143. 重排链表
给定一个单链表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.解题思路:常规解法是遍历ListNode保存在..原创 2020-10-20 20:46:28 · 101 阅读 · 0 评论 -
LintCode Cat刷题记录
846.多关键字排序给定n个学生的学号(从1到n编号)以及他们的考试成绩,表示为(学号,考试成绩),请将这些学生按考试成绩降序排序,若考试成绩相同,则按学号升序排序。样例样例1输入: array = [[2,50],[1,50],[3,100]]输出: [[3,100],[1,50],[2,50]]样例2输入: array = [[2,50],[1,50],...原创 2019-04-02 11:03:20 · 656 阅读 · 0 评论 -
leetcode 258题 详解
题目描述:给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2进阶:你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?思路:任意一个非负整数abcd,其中将任意一位x抽离出来视作个位数,抛弃它的...原创 2018-09-29 10:37:50 · 539 阅读 · 0 评论 -
LintCode 1674 刷题记录
1674.倒可乐CAT 专属题目中文English给定一个容积为s的装满可乐的瓶子和两个容积分别为n和m的空杯子, 其中n + m = s. 问能否通过在三个容器之间来回倒可乐来平分这s体积的可乐? 如果可以, 返回最少倾倒可乐的次数; 反之返回-1.由于瓶子和杯子上没有刻度, 所以当你从一个容器倒可乐到另一个容器中时, 只能一直倒可乐直到一个容器空了或者另一...原创 2019-06-25 12:00:12 · 790 阅读 · 0 评论 -
Lintcdoe 1479 能否到达终点
1479.能否到达终点中文English给一个大小为m*n的map,1代表空地,0代表障碍物,9代表终点。请问如果你从(0, 0)开始能否到达终点?样例样例1输入: [ [1,1,1], [1,1,1], [1,1,9]]输出: true样例2输入: [ [1,1,1], [1,0,0], [1,0,9]]输出: false...原创 2019-05-08 14:37:04 · 387 阅读 · 0 评论 -
Lintcode 277 栈的push-pop序列
377.栈的push-pop序列CAT 专属题目中文English给定一个栈的 push 和 pop 序列。判定其中是否有合法序列。样例样例 1:输入:push = [1, 2, 3], pop = [3, 2, 1]输出:True解释:1,2,3 依次入栈,3,2,1 再依次出栈。样例 2:输入:push = [1, 2, 3], pop = [3,...原创 2019-05-08 00:24:05 · 2893 阅读 · 0 评论 -
Lintcode 945 任务计划
945.任务计划中文English给定一个字符串,表示CPU需要执行的任务。 这个字符串由大写字母A到Z构成,不同的字母代表不同的任务。完成任务不需要按照给定的顺序。 每项任务都可以在一个单位时间内被完成。 在每个单位时间,CPU可以选择完成一个任务或是不工作。但是,题目会给定一个非负的冷却时间“n”,表示在执行两个“相同的任务”之间,必须至少有n个单位时间,此时CPU不能执行该任务...原创 2019-05-07 16:23:02 · 541 阅读 · 0 评论 -
Lintcode 12 带最小值操作的栈
12.带最小值操作的栈中文English实现一个栈, 支持以下操作:push(val)将 val 压入栈 pop()将栈顶元素弹出, 并返回这个弹出的元素 min()返回栈中元素的最小值要求 O(1) 开销.样例样例 2:输入: push(1) min() push(2) min() push(3) min()输出: 1 ...原创 2019-05-07 14:53:13 · 319 阅读 · 0 评论 -
Lintcode 40 用栈实现队列
40.用栈实现队列中文English正如标题所述,你需要使用两个栈来实现队列的一些操作。队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。pop和top方法都应该返回第一个元素的值。样例例1:输入: push(1) pop() push(2) push(3) ...原创 2019-05-07 13:57:38 · 146 阅读 · 0 评论 -
Lintcode 229 栈排序
229.栈排序中文English请设计一种方法将一个栈进行升序排列 (最大的数在最上面)。你可以使用另外一个栈来辅助操作,但不可将这些数复制到另外一个数据结构中 (如,数组)。样例给一个栈:| ||3||1||2||4| -排序之后:| ||4||3||2||1| -栈会被序列化为[4,2,1,3],也就是说最右边是栈顶。注意事...原创 2019-05-06 15:33:33 · 274 阅读 · 0 评论 -
Lintcode 61 搜索区间
61.搜索区间中文English给定一个包含n个整数的排序数组,找出给定目标值target的起始和结束位置。如果目标值不在数组中,则返回[-1, -1]样例例1:输入:[]9输出:[-1,-1]例2:输入:[5, 7, 7, 8, 8, 10]8输出:[3, 4]挑战时间复杂度 O(logn)O(log n) 想到用...原创 2019-04-28 15:37:33 · 192 阅读 · 0 评论 -
Lintcode 1667 区间统计
1667.区间统计CAT 专属题目中文English给定一个01数组arr和 一个整数k, 统计有多少区间符合如下条件:区间的两个端点都为 0 (允许区间长度为1) 区间内 1 的个数不多于k样例样例 1:输入: arr = [0, 0, 1, 0, 1, 1, 0], k = 1输出: 7解释: [0, 0], [1, 1], [3, 3], [6, ...原创 2019-04-25 16:07:42 · 1089 阅读 · 0 评论 -
968. 监控二叉树
给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。示例 1:输入:[0,0,null,0,0]输出:1解释:如图所示,一台摄像头足以监控所有节点。示例 2:输入:[0,0,null,0,null,0,null,null,0]输出:2解释:需要至少两个摄像头来监视树的所有节点。 上图显示了摄像头放置的有效位置之一。提示:给定树的节点数的范围是[1, 1000]。.原创 2020-09-23 17:29:29 · 118 阅读 · 0 评论 -
排列之全排列,下一个排列,第K个排列java篇
待续原创 2020-08-14 15:34:16 · 285 阅读 · 0 评论 -
1079. 活字印刷
你有一套活字字模tiles,其中每个字模上都刻有一个字母tiles[i]。返回你可以印出的非空字母序列的数目。注意:本题中,每个活字字模只能使用一次。示例 1:输入:"AAB"输出:8解释:可能的序列为 "A", "B", "AA", "AB", "BA", "AAB", "ABA", "BAA"。示例 2:输入:"AAABBC"输出:188提示:1 <= tiles.length <= 7 tiles由大写英文字母组成思路:用hashmap来...原创 2020-09-04 20:24:14 · 205 阅读 · 0 评论 -
491. 递增子序列
给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。示例:输入: [4, 6, 7, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]说明:给定数组的长度不会超过15。 数组中的整数范围是[-100,100]。 给定数组中可能包含重复数字,相等的数字应该被视为递增的一种情况。回溯:class Solution { Li.原创 2020-08-26 19:38:56 · 127 阅读 · 0 评论 -
647. 回文子串
给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例 1:输入:"abc"输出:3解释:三个回文子串: "a", "b", "c"示例 2:输入:"aaa"输出:6解释:6个回文子串: "a", "a", "a", "aa", "aa", "aaa"提示:输入的字符串长度不会超过 1000 。解法1:暴力,循环遍历出所有子串,然后判断子串是否是回文串。找出所有字串的时间原创 2020-08-19 18:12:22 · 166 阅读 · 0 评论 -
300. 最长上升子序列
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是[2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为O(n2) 。解题思路:动态规划,维护一个dp数组,dp[i]保存的是到第i个数据的最长上升子序列。具体做法是:对于sums[i],首先分别比较sums[i]和0-i-1的数的大小关系,假设sums[i]&...原创 2020-08-06 20:08:32 · 107 阅读 · 0 评论 -
95. 不同的二叉搜索树 II
给定一个整数 n,生成所有由 1 ...n 为节点所组成的 二叉搜索树 。示例:输入:3输出:[[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 ...原创 2020-07-21 20:28:36 · 99 阅读 · 0 评论 -
47. 全排列 II
难度中等352收藏分享切换为英文关注反馈给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]解题思路:记忆回溯class Solution { List<List<Integer>> list; public List<List<Integer>> permuteUnique(int[] nums) { ...原创 2020-07-21 20:27:07 · 125 阅读 · 0 评论 -
面试题 08.07. 无重复字符串的排列组合
无重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合,字符串每个字符均不相同。示例1:输入:S = "qwe"输出:["qwe", "qew", "wqe", "weq", "ewq", "eqw"]示例2:输入:S = "ab"输出:["ab", "ba"]提示:字符都是英文字母。字符串长度在[1, 9]之间。class Solution { public String[] permutation(String S) { ...原创 2020-07-18 23:50:26 · 179 阅读 · 0 评论 -
172. 阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释:3! = 6, 尾数中没有零。示例2:输入: 5输出: 1解释:5! = 120, 尾数中有 1 个零.class Solution { public int trailingZeroes(int n) { int num = 0 ; while(n>4){ num += n/5; n /= 5;...原创 2020-07-11 14:40:20 · 92 阅读 · 0 评论 -
496. 下一个更大元素 I
给定两个 没有重复元素 的数组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]解释: 对于num1中的数字4,你无法在第二个数组中找到下一个更...原创 2020-05-09 18:42:44 · 109 阅读 · 0 评论 -
503. 下一个更大元素 II
给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。示例 1:输入: [1,2,1]输出: [2,-1,2]解释: 第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大的数;第二个...原创 2020-05-07 00:27:00 · 156 阅读 · 0 评论 -
53. 最大子序和
给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。方法一:动态规划思路和算法假设 nums 数组的长度是 n,...原创 2020-05-03 19:53:17 · 204 阅读 · 0 评论 -
15. 三数之和
给定一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]思路:暴力解(N^...原创 2019-09-02 16:53:10 · 173 阅读 · 0 评论 -
11. 盛最多水的容器
给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(...原创 2019-08-30 14:04:18 · 148 阅读 · 0 评论 -
OJ 131. Align Strings 动态规划暴力解法
题目描述现在有两个字符串,可以在字符串的任意位置(开头,中间,末尾)插入任意数量的空格.在插入适当数量的空格后,将两个字符串右对齐,通过一定的规则获得一个匹配值X,你的任务是寻找一种方案,使得匹配值X最大.匹配值的计算规则是:1.对每一个匹配的位置(对应位置字符相同),X+=2;2.对每一段连续的空格,X-=1;也即匹配值X是匹配位置的2倍减去连续空格的段数.注意并不处罚左边的不匹...原创 2019-08-27 14:04:05 · 1235 阅读 · 0 评论 -
LeettCode 69. x 的平方根
实现int sqrt(int x)函数。计算并返回x的平方根,其中x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。来源:力扣(LeetCode)链接:https://le...原创 2019-08-16 17:09:37 · 144 阅读 · 0 评论 -
LeettCode 108将有序数组转换为二叉搜索树
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / /-10...原创 2019-07-02 11:16:51 · 187 阅读 · 0 评论 -
LeettCode 13罗马数字转整数
13. 罗马数字转整数罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II...原创 2019-06-26 10:06:04 · 229 阅读 · 0 评论 -
leetcode 36 棒球比赛
你现在是棒球比赛记录员。给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数。2."+"(一轮的得分):表示本轮获得的得分是前两轮有效回合得分的总和。3."D"(一轮的得分):表示本轮获得的得分是前一轮有效回合得分的两倍。4."C"(一个操作,这不是一个回合的分数):表示您获得的最后一个有效回合的分数是无效的,应该被移除...原创 2019-06-01 20:42:34 · 115 阅读 · 0 评论 -
leetcode 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 ...原创 2019-05-17 10:57:57 · 125 阅读 · 0 评论