
LeetCode困难
wenbaoxie
哈哈哈哈
展开
-
24点游戏输出表达式
带表达式输出的24点游戏,如果只是判断能不能组成24点,那么比较简单,输出所有的表达式不能将中间值保存到list中,需要额外的一个变量去保存中间结果,然后依次保存即可/** * @Author 17912 * @Date 2021-9-6-006 9:53:24 * @Version 1.0 */import java.util.ArrayList;import java.util.Random;public class Main { public static void原创 2021-09-06 10:03:00 · 704 阅读 · 0 评论 -
55、独特字符串
题目描述:如果一个字符在字符串 S 中有且仅有出现一次,那么我们称其为独特字符。例如,在字符串 S = “LETTER” 中,“L” 和 “R” 可以被称为独特字符。我们再定义 UNIQ(S) 作为字符串 S 中独特字符的个数。那么,在 S = “LETTER” 中, UNIQ(“LETTER”) = 2。对于给定字符串 S,计算其所有非空子串的独特字符的个数(即 UNIQ(subst...原创 2020-02-09 15:39:30 · 209 阅读 · 0 评论 -
54、连续整数求和
题目描述:给定一个正整数 N,试求有多少组连续正整数满足所有数字之和为 N?示例 1:输入: 5输出: 2解释: 5 = 5 = 2 + 3,共有两组连续整数([5],[2,3])求和后为 5。示例 2:输入: 9输出: 3解释: 9 = 9 = 4 + 5 = 2 + 3 + 4示例 3:输入: 15输出: 4解释: 15 = 15 = 8 + 7 = 4 + 5 + ...原创 2020-02-09 15:38:14 · 346 阅读 · 0 评论 -
53、尽量减少恶意软件的传播 II
题目描述:(这个问题与 尽量减少恶意软件的传播 是一样的,不同之处用粗体表示。)在节点网络中,只有当 graph[i][j] = 1 时,每个节点 i 能够直接连接到另一个节点 j。一些节点 initial 最初被恶意软件感染。只要两个节点直接连接,且其中至少一个节点受到恶意软件的感染,那么两个节点都将被恶意软件感染。这种恶意软件的传播将继续,直到没有更多的节点可以被这种方式感染。假设 M...原创 2020-02-05 09:22:49 · 340 阅读 · 0 评论 -
52、尽量减少恶意软件的传播
题目描述:在节点网络中,只有当 graph[i][j] = 1 时,每个节点 i 能够直接连接到另一个节点 j。一些节点 initial 最初被恶意软件感染。只要两个节点直接连接,且其中至少一个节点受到恶意软件的感染,那么两个节点都将被恶意软件感染。这种恶意软件的传播将继续,直到没有更多的节点可以被这种方式感染。假设 M(initial) 是在恶意软件停止传播之后,整个网络中感染恶意软件的最...原创 2020-02-03 17:52:07 · 383 阅读 · 0 评论 -
51、连接词
题目描述:给定一个不含重复单词的列表,编写一个程序,返回给定单词列表中所有的连接词。连接词的定义为:一个字符串完全是由至少两个给定数组中的单词组成的。示例:输入: [“cat”,“cats”,“catsdogcats”,“dog”,“dogcatsdog”,“hippopotamuses”,“rat”,“ratcatdogcat”]输出: [“catsdogcats”,“dogcatsd...原创 2020-01-22 16:56:41 · 284 阅读 · 0 评论 -
50、扰乱字符串(dp思路没有看懂)
题目描述:示例 2:输入: s1 = “abcde”, s2 = “caebd”输出: false使用dpclass Solution { public boolean isScramble(String s1, String s2) { char[] chs1 = s1.toCharArray(); char[] chs2 = s2.toCh...原创 2020-01-20 18:46:55 · 167 阅读 · 0 评论 -
49、最大矩形
题目描述:使用动态规划,看代码:class Solution { public int maximalRectangle(char[][] matrix) { int row = matrix.length; if(row == 0){ return 0; } int col = matrix[0].leng...原创 2020-01-20 18:44:41 · 199 阅读 · 0 评论 -
48、相似度为 K 的字符串
题目描述:如果可以通过将 A 中的两个小写字母精确地交换位置 K 次得到与 B 相等的字符串,我们称字符串 A 和 B 的相似度为 K(K 为非负整数)。给定两个字母异位词 A 和 B ,返回 A 和 B 的相似度 K 的最小值。示例 1:输入:A = “ab”, B = “ba”输出:1示例 2:输入:A = “abc”, B = “bca”输出:2示例 3:输入:A = “...原创 2020-01-09 17:29:46 · 475 阅读 · 0 评论 -
47、 让字符串成为回文串的最少插入次数
题目描述:给你一个字符串 s ,每一次操作你都可以在字符串的任意位置插入任意字符。请你返回让 s 成为回文串的 最少操作次数 。「回文串」是正读和反读都相同的字符串。示例 1:输入:s = “zzazz”输出:0解释:字符串 “zzazz” 已经是回文串了,所以不需要做任何插入操作。示例 2:输入:s = “mbadm”输出:2解释:字符串可变为 “mbdadbm” 或者 “...原创 2020-01-09 17:28:28 · 344 阅读 · 0 评论 -
46、到达终点
题目描述:从点 (x, y) 可以转换到 (x, x+y) 或者 (x+y, y)。给定一个起点 (sx, sy) 和一个终点 (tx, ty),如果通过一系列的转换可以从起点到达终点,则返回 True ,否则返回 False。示例:输入: sx = 1, sy = 1, tx = 3, ty = 5输出: True解释:可以通过以下一系列转换从起点转换到终点:(1, 1) -&...原创 2019-12-01 20:43:53 · 407 阅读 · 0 评论 -
45、数字1的个数
题目描述:给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。示例:输入: 13输出: 6解释: 数字 1 出现在以下数字中: 1, 10, 11, 12, 13 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/number-of-digit-one著作权归领扣网络所有。商业转载请联系官方授权,非商业转载...原创 2019-11-28 20:21:30 · 279 阅读 · 0 评论 -
43、滑动窗口中位数
题目描述:中位数是有序序列最中间的那个数。如果序列的大小是偶数,则没有最中间的数;此时中位数是最中间的两个数的平均数。例如:[2,3,4],中位数是 3[2,3],中位数是 (2 + 3) / 2 = 2.5给出一个数组 nums,有一个大小为 k 的窗口从最左端滑动到最右端。窗口中有 k 个数,每次窗口移动 1 位。你的任务是找出每次窗口移动后得到的新窗口中元素的中位数,并输出由它们组...原创 2019-11-14 20:40:17 · 196 阅读 · 0 评论 -
四、得分最高的单词集合(Weekly Contest 162)
题目描述:你将会得到一份单词表 words,一个字母表 letters (可能会有重复字母),以及每个字母对应的得分情况表 score。请你帮忙计算玩家在单词拼写游戏中所能获得的「最高得分」:能够由 letters 里的字母拼写出的 任意 属于 words 单词子集中,分数最高的单词集合的得分。单词拼写游戏的规则概述如下:玩家需要用字母表 letters 里的字母来拼写单词表 words ...原创 2019-11-12 09:31:14 · 377 阅读 · 0 评论 -
42、移除盒子
题目描述:给出一些不同颜色的盒子,盒子的颜色由数字表示,即不同的数字表示不同的颜色。你将经过若干轮操作去去掉盒子,直到所有的盒子都去掉为止。每一轮你可以移除具有相同颜色的连续 k 个盒子(k >= 1),这样一轮之后你将得到 k*k 个积分。当你将所有盒子都去掉之后,求你能获得的最大积分和。示例 1:输入:[1, 3, 2, 2, 2, 3, 4, 3, 1]输出:23解释...原创 2019-11-07 11:48:43 · 287 阅读 · 0 评论 -
40、24点游戏
题目描述:你有 4 张写有 1 到 9 数字的牌。你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24。示例 1:输入: [4, 1, 8, 7]输出: True解释: (8-4) * (7-1) = 24示例 2:输入: [1, 2, 1, 2]输出: False注意:除法运算符 / 表示实数除法,而不是整数除法。例如 4 / (1 - 2/3) = 12 。每个...原创 2019-10-24 18:21:33 · 515 阅读 · 0 评论 -
39、最大间距
题目描述:给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于 2,则返回 0。示例 1:输入: [3,6,9,1]输出: 3解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。示例 2:输入: [10]输出: 0解释: 数组元素个数小于 2,因此返回 0。说明:你可以假设数组中所有...原创 2019-10-22 09:20:17 · 84 阅读 · 0 评论 -
38、戳气球
题目描述:使用递归+回溯超时。。。[7,9,8,0,7,1,3,5,5,2,3,3,9]到这个测试用例就超时了,因此考虑对其进行剪枝class Solution { int max = 0; public int maxCoins(int[] nums) { // 先去除所有的0,不然会出错 List<Integer&g...原创 2019-10-19 16:35:36 · 153 阅读 · 0 评论 -
37、黑板异或游戏
题目描述:一个黑板上写着一个非负整数数组 nums[i] 。小红和小明轮流从黑板上擦掉一个数字,小红先手。如果擦除一个数字后,剩余的所有数字按位异或运算得出的结果等于 0 的话,当前玩家游戏失败。 (另外,如果只剩一个数字,按位异或运算得到它本身;如果无数字剩余,按位异或运算结果为 0。)换种说法就是,轮到某个玩家时,如果当前黑板上所有数字按位异或运算结果等于 0,这个玩家获胜。假设两个玩家...原创 2019-10-18 21:38:50 · 249 阅读 · 0 评论 -
36、地下城游戏
题目描述:一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数...原创 2019-10-17 21:34:41 · 241 阅读 · 0 评论 -
7、N皇后II
题目描述:跟之前的那道题如出一辙,只是返回的不一样,这里就不说了,关键是那个position数组建立的要理解代码:class Solution { int result = 0; public int totalNQueens(int n) {// 用以计算每行中皇后所在的位置 int position[] = new int[n]; gettotalNQueen...原创 2019-04-14 22:31:39 · 168 阅读 · 0 评论 -
30、插入区间
题目描述:给出一个无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。示例 1:输入: intervals = [[1,3],[6,9]], newInterval = [2,5]输出: [[1,5],[6,9]]示例 2:输入: intervals = [[1,2],[3,5],[6,7],[...原创 2019-08-02 10:58:08 · 111 阅读 · 0 评论 -
32、不同的子序列
题目描述:给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)示例 1:输入: S = “rabbbit”, T = “rabbit”输出: 3解释:如下图所示, 有 3 种可以从 ...原创 2019-08-07 11:11:41 · 126 阅读 · 0 评论 -
33、按位与为零的三元祖
题目描述:给定一个整数数组 A,找出索引为 (i, j, k) 的三元组,使得:0 <= i < A.length0 <= j < A.length0 <= k < A.lengthA[i] & A[j] & A[k] == 0,其中 & 表示按位与(AND)操作符。示例:输入:[2,1,3]输出:12解释:我们可以选出...原创 2019-08-07 11:45:02 · 197 阅读 · 0 评论 -
三、用户网站访问行为分析(Biweekly6)
题目描述:为了评估某网站的用户转化率,我们需要对用户的访问行为进行分析,并建立用户行为模型。日志文件中已经记录了用户名、访问时间 以及 页面路径。为了方便分析,日志文件中的 N 条记录已经被解析成三个长度相同且长度都为 N 的数组,分别是:用户名 username,访问时间 timestamp 和 页面路径 website。第 i 条记录意味着用户名是 username[i] 的用户在 tim...原创 2019-08-11 09:55:13 · 827 阅读 · 0 评论 -
35、破解保险箱
题目描述:有一个需要密码才能打开的保险箱。密码是 n 位数, 密码的每一位是 k 位序列 0, 1, …, k-1 中的一个 。你可以随意输入密码,保险箱会自动记住最后 n 位输入,如果匹配,则能够打开保险箱。举个例子,假设密码是 “345”,你可以输入 “012345” 来打开它,只是你输入了 6 个字符.请返回一个能打开保险箱的最短字符串。示例1:输入: n = 1, k = 2...原创 2019-08-15 10:57:23 · 1481 阅读 · 0 评论 -
34、从先序遍历还原二叉树
题目描述:我们从二叉树的根节点 root 开始进行深度优先搜索。在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值。(如果节点的深度为 D,则其直接子节点的深度为 D + 1。根节点的深度为 0)。如果节点只有一个子节点,那么保证该子节点为左子节点。给出遍历输出 S,还原树并返回其根节点 root。示例 1:emm这不算困难题吧,把字符串...原创 2019-08-13 11:26:10 · 558 阅读 · 0 评论 -
29、最长连续序列
题目描述:给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。、emm投机取巧的方法,注意的是判断重复的情况,比如:0,1,1,2,3为4而不是4,这点需要注意一下class Solution { public...原创 2019-08-01 20:01:29 · 157 阅读 · 0 评论 -
31、跳跃游戏II
题目描述:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。说明:假设你总是可以到达数组的最后一个位...原创 2019-08-03 11:44:34 · 214 阅读 · 0 评论 -
28、原子的数量
题目描述:给定一个化学式formula(作为字符串),返回每种原子的数量。原子总是以一个大写字母开始,接着跟随0个或任意个小写字母,表示原子的名字。如果数量大于 1,原子后会跟着数字表示原子的数量。如果数量等于 1 则不会跟数字。例如,H2O 和 H2O2 是可行的,但 H1O2 这个表达是不可行的。两个化学式连在一起是新的化学式。例如 H2O2He3Mg4 也是化学式。一个括号中的化学...原创 2019-07-25 15:40:45 · 266 阅读 · 0 评论 -
15、合并石头的最低成本
题目描述:有 N 堆石头排成一排,第 i 堆中有 stones[i] 块石头。每次移动(move)需要将连续的 K 堆石头合并为一堆,而这个移动的成本为这 K 堆石头的总数。找出把所有石头合并成一堆的最低成本。如果不可能,返回 -1 。示例 1:输入:stones = [3,2,4,1], K = 2输出:20解释:从 [3, 2, 4, 1] 开始。合并 [3, 2],成本为 ...原创 2019-05-30 17:39:45 · 477 阅读 · 0 评论 -
12、课程表 III
题目描述:这里有 n 门不同的在线课程,他们按从 1 到 n 编号。每一门课程有一定的持续上课时间(课程时间)t 以及关闭时间第 d 天。一门课要持续学习 t 天直到第 d 天时要完成,你将会从第 1 天开始。给出 n 个在线课程用 (t, d) 对表示。你的任务是找出最多可以修几门课。示例:输入: [[100, 200], [200, 1300], [1000, 1250], [2000...原创 2019-05-11 23:20:03 · 393 阅读 · 0 评论 -
11、编辑距离
题目描述:给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入: word1 = “horse”, word2 = “ros”输出: 3解释:horse -> rorse (将 ‘h’ 替换为 ‘r’)rorse -> rose...原创 2019-04-24 22:59:06 · 118 阅读 · 0 评论 -
10、买卖股票的最佳时机 IV
题目描述:给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [2,4,1], k = 2输出: 2解释: 在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所...原创 2019-04-23 22:50:25 · 154 阅读 · 0 评论 -
9、买卖股票的最佳时机 III
题目描述:给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能...原创 2019-04-22 22:51:34 · 159 阅读 · 0 评论 -
4、滑动窗口的最大值
题目描述:给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口 k 内的数字。滑动窗口每次只向右移动一位。返回滑动窗口最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释:滑动窗口的位置 最大值[1 3 -1] -...原创 2019-04-09 22:45:10 · 184 阅读 · 0 评论 -
8、解数独
题目描述:编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 ‘.’ 表示。答案被标成红色。Note:给定的数独序列只包含数字 1-9 和字符 ‘.’ 。你可以假设给定的数独只有唯一解。给定数独永远是 9...原创 2019-04-16 11:06:53 · 692 阅读 · 0 评论 -
207、合并二叉树
题目描述:注意: 合并必须从两个树的根节点开始。肯定是递归实现代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = ...原创 2019-03-30 22:28:44 · 159 阅读 · 0 评论 -
5、分割数组的最大值
题目描述:给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。注意:数组长度 n 满足以下条件:1 ≤ n ≤ 10001 ≤ m ≤ min(50, n)示例:输入:nums = [7,2,5,10,8]m = 2输出:18解释:一共有四种方法将nums分割为2个子数组。其中最好的方式是...原创 2019-03-25 21:52:33 · 675 阅读 · 0 评论 -
3、有序队列
题目描述:给出了一个由小写字母组成的字符串 S。然后,我们可以进行任意次数的移动。在每次移动中,我们选择前 K 个字母中的一个(从左侧开始),将其从原位置移除,并放置在字符串的末尾。返回我们在任意次数的移动之后可以拥有的按字典顺序排列的最小字符串。示例 1:输入:S = “cba”, K = 1输出:“acb”解释:在第一步中,我们将第一个字符(“c”)移动到最后,获得字符串 “b...原创 2019-03-15 20:11:46 · 1804 阅读 · 2 评论