leetcode困难题
BJFU_vth
这个作者很懒,什么都没留下…
展开
-
128:最长连续序列
问题描述给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。思路用set来O(1)时间判断是否在里面。再用1个set用来缓存访问过的值即可。空间换时间。方法一class Solution { public int longestConsecutive(int[] nums) { Set<Inte原创 2020-08-05 20:58:40 · 128 阅读 · 0 评论 -
【剑指offer】52. 正则表达式匹配
问题描述请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配思路递归着刚吧。没办法了。这种在某种情况下有好几种选择的,只能用递归硬刚。 很熟悉递归之后可以把递归改成动态规划。递归。 (方法一)动态规划。 (方法二)方法一import java.util.*;原创 2020-06-23 15:38:50 · 167 阅读 · 0 评论 -
145. 二叉树的后序遍历
问题描述给定一个二叉树,返回它的 后序 遍历。示例输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]思路非递归遍历先序最简单,为啥呢?因为对于一个结点不用判断它是从哪里来的。中序的话难一些,因为要判断是从左子树来的还是右子树来的。后续最难,因为它要判定是不是左右子树都遍历过了。对于遍历过没遍历过,我们完全可以用一个set来记录一下,费不了多大劲,真的。这样我们就能很方便的知道程序该怎么走。方法一class Solut原创 2020-06-26 21:19:13 · 208 阅读 · 0 评论 -
25:K个一组翻转链表
问题描述给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例给你这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->1->4->5说明:你的算法只能使用常数的额外空间。你不能只是单纯的改变节点内部的值,而原创 2020-05-19 16:29:57 · 114 阅读 · 0 评论 -
45:跳跃游戏II
问题描述给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。说明:假设你总是可以到达数组的最...原创 2020-05-04 20:28:02 · 165 阅读 · 0 评论 -
1095:山脉数组中查找目标值
问题描述(这是一个 交互式问题 )给你一个 山脉数组 mountainArr,请你返回能够使得 mountainArr.get(index) 等于 target 最小 的下标 index 值。如果不存在这样的下标 index,就请返回 -1。何为山脉数组?如果数组 A 是一个山脉数组的话,那它满足如下条件:首先,A.length >= 3其次,在 0 < i < A....原创 2020-04-30 10:54:23 · 188 阅读 · 0 评论 -
23:合并K个排序链表
问题描述合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6思路把所有元素一股脑的加入优先队列,然后再输出出来即可。不过这样可能会导致没有断链,成环。 所以我们每加入一...原创 2020-04-27 10:13:57 · 157 阅读 · 0 评论 -
1591:面试题51. 数组中的逆序对
问题描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例输入: [7,5,6,4]输出: 5限制:0 <= 数组长度 <= 50000思路这两天太忙了没时间看。暴力法倒是很容易就写出来。但是这个问题规模用暴力是不行的。O(n2),25万的规模,倒也还凑合,不过在面试中暴力可能就拿个基本分...原创 2020-04-24 23:11:30 · 257 阅读 · 0 评论 -
154:寻找旋转排序数组中的最小值 II
问题描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。注意数组中可能存在重复的元素。示例输入: [1,3,5]输出: 1输入: [2,2,2,0,1]输出: 0思路这题跟剑指offer6完全一样,看我那篇吧。方法一Java版class Solu...原创 2020-04-20 17:02:10 · 107 阅读 · 0 评论 -
466:统计重复个数
问题描述由 n 个连接的字符串 s 组成字符串 S,记作 S = [s,n]。例如,[“abc”,3]=“abcabcabc”。如果我们可以从 s2 中删除某些字符使其变为 s1,则称字符串 s1 可以从字符串 s2 获得。例如,根据定义,“abc” 可以从 “abdbec” 获得,但不能从 “acbbe” 获得。现在给你两个非空字符串 s1 和 s2(每个最多 100 个字符长)和两个整数...原创 2020-04-19 12:41:22 · 248 阅读 · 0 评论 -
887:鸡蛋掉落
问题描述你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的鸡蛋都不会破。每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层 X 扔下(满足 1 <=...原创 2020-04-13 23:52:33 · 146 阅读 · 0 评论 -
72:编辑距离
问题描述给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例输入:word1 = "horse", word2 = "ros"输出:3解释:horse -> rorse (将 'h' 替换为 'r')rorse -> rose (...原创 2020-04-06 21:30:23 · 102 阅读 · 0 评论 -
460:LFU缓存
问题描述设计并实现最不经常使用(LFU)缓存的数据结构。它应该支持以下操作:get 和 put。get(key) - 如果键存在于缓存中,则获取键的值(总是正数),否则返回 -1。put(key, value) -如果键不存在,请设置或插入值。当缓存达到其容量时,它应该在插入新项目之前,使最不经常使用的项目无效。在此问题中,当存在平局(即两个或更多个键具有相同使用频率)时,最近最少使用的键...原创 2020-04-05 14:16:06 · 180 阅读 · 0 评论 -
84:柱状图中最大的矩形
问题描述给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。这题是接雨水的姊妹篇。示例输入: [2,1,5,6,2,3]输出: 10思路这题...原创 2020-04-04 22:08:03 · 96 阅读 · 0 评论 -
42:接雨水
问题描述给定 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 17:10:21 · 181 阅读 · 0 评论 -
32: 最长有效括号
问题描述:给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。实例1:输入: “(()”输出: 2解释: 最长有效括号子串为 “()”实例2:输入: “)()())”输出: 4解释: 最长有效括号子串为 “()()”问题分析,这题在leetcode属于hard难度的问题。而且是题号非常靠前hard级别的问题。面试时遇到的概率非常大。所以要当真。...原创 2019-12-05 16:59:32 · 166 阅读 · 0 评论
分享