LeetCode刷题记录(基于java语言)
文章平均质量分 61
信仰..
学无止境
展开
-
JAVA程序设计:将数组分成两个数组并最小化数组和的差(LeetCode:5897)【附带二进制表示中1的个数为固定值的状态枚举方法】
给你一个长度为 2 * n的整数数组。你需要将nums分成两个长度为n的数组,分别求出两个数组的和,并 最小化两个数组和之差的绝对值。nums中每个元素都需要放入两个数组之一。请你返回最小的数组和之差。示例 1:输入:nums = [3,9,7,3]输出:2解释:最优分组方案是分成 [3,9] 和 [7,3] 。数组和之差的绝对值为 abs((3 + 9) - (7 + 3)) = 2 。示例 2:输入:nums = [-36,36]输出:72解...原创 2021-10-10 16:52:02 · 1615 阅读 · 0 评论 -
JAVA程序设计:划分数字的方案数(LeetCode:1977)
你写下了若干 正整数,并将它们连接成了一个字符串num。但是你忘记给这些数字之间加逗号了。你只记得这一列数字是 非递减的且没有 任何数字有前导 0 。请你返回有多少种可能的 正整数数组可以得到字符串num。由于答案可能很大,将结果对 109 + 7取余后返回。示例 1:输入:num = "327"输出:2解释:以下为可能的方案:3, 27327示例 2:输入:num = "094"输出:0解释:不能有数字有前导 0 ,且所有数字均为正数。示例 3:...原创 2021-10-06 10:48:06 · 360 阅读 · 0 评论 -
JAVA程序设计:分割数组的最多方案数(LeetCode:2025)
给你一个下标从0开始且长度为n的整数数组nums。分割数组nums的方案数定义为符合以下两个条件的pivot数目:1 <= pivot < n nums[0] + nums[1] + ... + nums[pivot - 1] == nums[pivot] + nums[pivot + 1] + ... + nums[n - 1]同时给你一个整数k。你可以将nums中一个元素变为k或不改变数组。请你返回在至多改变一个元素的前提下,最多有...原创 2021-10-04 12:31:21 · 468 阅读 · 0 评论 -
JAVA程序设计:石子游戏 IX(LeetCode:5892)
Alice 和 Bob 再次设计了一款新的石子游戏。现有一行 n 个石子,每个石子都有一个关联的数字表示它的价值。给你一个整数数组 stones ,其中 stones[i] 是第 i 个石子的价值。Alice 和 Bob 轮流进行自己的回合,Alice 先手。每一回合,玩家需要从 stones中移除任一石子。如果玩家移除石子后,导致 所有已移除石子 的价值总和 可以被 3 整除,那么该玩家就 输掉游戏 。如果不满足上一条,且移除后没有任何剩余的石子,那么 Bob 将会直接获胜(即便是在 Ali..原创 2021-10-03 20:07:00 · 409 阅读 · 0 评论 -
JAVA程序设计:不同的好子序列数目(LeetCode:1987)
给你一个二进制字符串binary。binary的一个 子序列如果是 非空的且没有 前导0(除非数字是 "0"本身),那么它就是一个 好的子序列。请你找到binary不同好子序列的数目。比方说,如果binary = "001",那么所有 好子序列为["0", "0", "1"],所以 不同的好子序列为"0" 和"1"。 注意,子序列"00","01"和"001"不是好的,因为它们有前导 0 。请你返回binary中不同好子序列的数目。由于...原创 2021-09-29 22:21:17 · 351 阅读 · 0 评论 -
JAVA程序设计:好子集的数目(LeetCode:1994)
给你一个整数数组nums。如果nums的一个子集中,所有元素的乘积可以用若干个 互不相同的质数相乘得到,那么我们称它为好子集。比方说,如果nums = [1, 2, 3, 4]:[2, 3],[1, 2, 3]和[1, 3]是 好子集,乘积分别为6 = 2*3,6 = 2*3和3 = 3。[1, 4] 和[4]不是 好子集,因为乘积分别为4 = 2*2 和4 = 2*2。请你返回 nums中不同的好子集的数目对109 + 7取余的结果。...原创 2021-09-29 21:27:42 · 434 阅读 · 0 评论 -
JAVA程序设计:每棵子树内缺失的最小基因值(LeetCode:2003)
有一棵根节点为 0的 家族树,总共包含 n个节点,节点编号为 0到 n - 1。给你一个下标从 0开始的整数数组 parents,其中parents[i]是节点 i的父节点。由于节点 0是 根,所以parents[0] == -1。总共有105个基因值,每个基因值都用 闭区间[1, 105]中的一个整数表示。给你一个下标从0开始的整数数组nums,其中nums[i]是节点 i的基因值,且基因值 互不相同。请你返回一个数组ans,长度为n,其...原创 2021-09-28 19:42:46 · 313 阅读 · 0 评论 -
JAVA程序设计:解出数学表达式的学生分数(LeetCode:5884)
给你一个字符串s,它 只 包含数字0-9,加法运算符'+'和乘法运算符'*',这个字符串表示一个合法的只含有个位数数字的数学表达式(比方说3+5*2)。有 n位小学生将计算这个数学表达式,并遵循如下 运算顺序:按照 从左到右的顺序计算 乘法,然后按照 从左到右的顺序计算 加法。给你一个长度为 n的整数数组answers,表示每位学生提交的答案。你的任务是给 answer数组按照如下 规则打分:如果一位学生的答案 等于表达式的正确结果,这位学生将得...原创 2021-09-27 12:28:03 · 332 阅读 · 0 评论 -
力扣杯2021秋季编程大赛 LCP 47.入场安检
「力扣挑战赛」 的入场仪式马上就要开始了,由于安保工作的需要,设置了可容纳人数总和为M的N个安检室,capacities[i]记录第i个安检室可容纳人数。安检室拥有两种类型:先进先出:在安检室中的所有观众中,最早进入安检室的观众最先离开 后进先出:在安检室中的所有观众中,最晚进入安检室的观众最先离开恰好M+1位入场的观众(编号从 0 开始)需要排队依次入场安检, 入场安检的规则如下:观众需要先进入编号0的安检室 当观众将进入编号i的安检室时(0 <= i &...原创 2021-09-25 20:59:28 · 360 阅读 · 1 评论 -
力扣杯2021秋季编程大赛 LCP 46.志愿者调配
「力扣挑战赛」有n个比赛场馆(场馆编号从0开始),场馆之间的通道分布情况记录于二维数组edges中,edges[i]= [x, y]表示第i条通道连接场馆x和场馆y(即两个场馆相邻)。初始每个场馆中都有一定人数的志愿者(不同场馆人数可能不同),后续m天每天均会根据赛事热度进行志愿者人数调配。调配方案分为如下三种:将编号为idx的场馆内的志愿者人数减半; 将编号为idx的场馆相邻的场馆的志愿者人数都加上编号为idx的场馆的志愿者人数; 将编号为idx的场馆相...原创 2021-09-25 20:53:11 · 309 阅读 · 0 评论 -
JAVA程序设计:从子集的和还原数组(LeetCode:1982)
存在一个未知数组需要你进行还原,给你一个整数 n 表示该数组的长度。另给你一个数组 sums ,由未知数组中全部 2n 个 子集的和 组成(子集中的元素没有特定的顺序)。返回一个长度为 n 的数组 ans 表示还原得到的未知数组。如果存在 多种 答案,只需返回其中 任意一个 。如果可以由数组 arr 删除部分元素(也可能不删除或全删除)得到数组 sub ,那么数组 sub 就是数组 arr 的一个 子集 。sub 的元素之和就是 arr 的一个 子集的和 。一个空数组的元素之和为 0 。注意:生原创 2021-09-21 22:52:07 · 370 阅读 · 0 评论 -
JAVA程序设计:重复 K 次的最长子序列(LeetCode:2014)
给你一个长度为 n 的字符串 s ,和一个整数 k 。请你找出字符串 s 中 重复 k 次的 最长子序列 。子序列 是由其他字符串删除某些(或不删除)字符派生而来的一个字符串。如果seq * k 是 s 的一个子序列,其中 seq * k 表示一个由 seq 串联 k次构造的字符串,那么就称 seq 是字符串 s 中一个 重复 k 次 的子序列。举个例子,"bba" 是字符串 "bababcba" 中的一个重复 2 次的子序列,因为字符串 "bbabba" 是由 "bba" 串联 2 次构造..原创 2021-09-21 16:37:59 · 568 阅读 · 0 评论 -
JAVA程序设计:数组的最大公因数排序(LeetCode:1998)
给你一个整数数组 nums ,你可以在 nums 上执行下述操作 任意次 :如果 gcd(nums[i], nums[j]) > 1 ,交换 nums[i] 和 nums[j] 的位置。其中 gcd(nums[i], nums[j]) 是nums[i] 和 nums[j] 的最大公因数。如果能使用上述交换方式将 nums 按 非递减顺序 排列,返回 true ;否则,返回 false 。示例 1:输入:nums = [7,21,3]输出:true解释:可以执行下述操作完成对 [.原创 2021-09-12 15:19:22 · 502 阅读 · 0 评论 -
JAVA程序设计:最长公共子路径(LeetCode:1923)
一个国家由 n个编号为 0到 n - 1的城市组成。在这个国家里,每两个城市之间都有一条道路连接。总共有 m个编号为 0到 m - 1的朋友想在这个国家旅游。他们每一个人的路径都会包含一些城市。每条路径都由一个整数数组表示,每个整数数组表示一个朋友按顺序访问过的城市序列。同一个城市在一条路径中可能 重复 出现,但同一个城市在一条路径中不会连续出现。给你一个整数n和二维数组paths,其中paths[i]是一个整数数组,表示第 i个朋友走过的路径,请你返回 每一个朋友都走...原创 2021-07-24 15:45:48 · 434 阅读 · 0 评论 -
JAVA程序设计:最美子字符串的数目(LeetCode:5799)
如果某个字符串中 至多一个 字母出现 奇数 次,则称其为 最美 字符串。例如,"ccjjc" 和 "abab" 都是最美字符串,但 "ab" 不是。给你一个字符串 word ,该字符串由前十个小写英文字母组成('a' 到 'j')。请你返回 word 中 最美非空子字符串 的数目。如果同样的子字符串在 word 中出现多次,那么应当对 每次出现 分别计数。子字符串 是字符串中的一个连续字符序列。示例 1:输入:word = "aba"输出:4解释:4 个最美子字符串如下所示:-原创 2021-06-27 17:49:40 · 536 阅读 · 0 评论 -
JAVA程序设计:查询差绝对值的最小值(LeetCode:1906)
一个数组 a的 差绝对值的最小值定义为:0 <= i < j < a.length且 a[i] != a[j]的 |a[i] - a[j]| 的 最小值。如果 a中所有元素都 相同,那么差绝对值的最小值为 -1。比方说,数组[5,2,3,7,2]差绝对值的最小值是|2 - 3| = 1。注意答案不为 0,因为a[i] 和a[j]必须不相等。给你一个整数数组nums和查询数组queries,其中queries[i] = [li, ri]。对于每...原创 2021-06-25 22:38:36 · 1192 阅读 · 0 评论 -
JAVA程序设计:反转表达式值的最少操作次数(LeetCode:1896)
给你一个 有效的布尔表达式,用字符串expression表示。这个字符串包含字符'1','0','&'(按位 与运算),'|'(按位 或运算),'('和')'。比方说,"()1|1" 和"(1)&()"不是有效布尔表达式。而"1","(((1))|(0))"和"1|(0&(1))"是 有效布尔表达式。你的目标是将布尔表达式的 值反转 (也就是将 0变为 1,或者将 1变为 0),请你返回达成目标需要的 最少操作次数。比方说,如果...原创 2021-06-22 20:49:23 · 405 阅读 · 0 评论 -
JAVA程序设计:石子游戏 VIII(LeetCode:5766)
Alice 和 Bob 玩一个游戏,两人轮流操作, Alice 先手。总共有n个石子排成一行。轮到某个玩家的回合时,如果石子的数目 大于 1,他将执行以下操作:选择一个整数x > 1,并且 移除最左边的x个石子。将移除的石子价值之 和累加到该玩家的分数中。将一个 新的石子放在最左边,且新石子的值为被移除石子值之和。当只剩下 一个石子时,游戏结束。Alice 和 Bob 的 分数之差为(Alice 的分数- Bob 的分数)。Alice 的目标是...原创 2021-05-24 09:03:31 · 586 阅读 · 1 评论 -
JAVA程序设计:向下取整数对和(LeetCode:1862)
给你一个整数数组nums,请你返回所有下标对0 <= i, j < nums.length的floor(nums[i] / nums[j])结果之和。由于答案可能会很大,请你返回答案对109 + 7取余的结果。函数floor()返回输入数字的整数部分。示例 1:输入:nums = [2,5,9]输出:10解释:floor(2 / 5) = floor(2 / 9) = floor(5 / 9) = 0floor(2 / 2) = floor(5 / ...原创 2021-05-20 09:01:05 · 324 阅读 · 0 评论 -
JAVA程序设计:序列中不同最大公约数的数目(LeetCode:5725)
给你一个由正整数组成的数组nums。数字序列的最大公约数定义为序列中所有整数的共有约数中的最大整数。例如,序列[4,6,16]的最大公约数是2。数组的一个子序列本质是一个序列,可以通过删除数组中的某些元素(或者不删除)得到。例如,[2,5,10]是[1,2,1,2,4,1,5,10]的一个子序列。计算并返回nums的所有非空子序列中不同最大公约数的数目。示例 1:输入:nums = [6,10,3]输出:5解释:上图显示了所有...原创 2021-04-04 12:16:29 · 338 阅读 · 0 评论 -
JAVA程序设计:使所有区间的异或结果为零(LeetCode:1787)
给你一个整数数组 nums 和一个整数 k 。区间 [left, right](left <= right)的 异或结果 是对下标位于left 和 right(包括 left 和 right )之间所有元素进行 XOR 运算的结果:nums[left] XOR nums[left+1] XOR ... XOR nums[right] 。返回数组中 要更改的最小元素数 ,以使所有长度为 k 的区间异或结果等于零。示例 1:输入:nums = [1,2,0,3,0], ..原创 2021-03-11 10:34:50 · 375 阅读 · 0 评论 -
JAVA程序设计:由子序列构造的最长回文串的长度(LeetCode:5688)
给你两个字符串 word1 和 word2 ,请你按下述方法构造一个字符串:从 word1 中选出某个 非空 子序列 subsequence1 。从 word2 中选出某个 非空 子序列 subsequence2 。连接两个子序列 subsequence1 + subsequence2 ,得到字符串。返回可按上述方法构造的最长 回文串 的 长度 。如果无法构造回文串,返回 0 。字符串 s 的一个 子序列 是通过从 s 中删除一些(也可能不删除)字符而不更改其余字符的顺序生成的字符串。回文原创 2021-02-21 14:04:13 · 279 阅读 · 0 评论 -
JAVA程序设计:猫和老鼠 II(LeetCode:1728)
一只猫和一只老鼠在玩一个叫做猫和老鼠的游戏。它们所处的环境设定是一个rows x cols的方格 grid,其中每个格子可能是一堵墙、一块地板、一位玩家(猫或者老鼠)或者食物。玩家由字符'C'(代表猫)和'M'(代表老鼠)表示。地板由字符'.'表示,玩家可以通过这个格子。墙用字符'#'表示,玩家不能通过这个格子。食物用字符'F'表示,玩家可以通过这个格子。字符'C','M'和'F'在grid中都只会出现一次。猫和老鼠按照如下规则移动:老鼠 先移...原创 2021-02-02 14:48:15 · 1073 阅读 · 1 评论 -
JAVA程序设计:重构一棵树的方案数(LeetCode:1719)
给你一个数组pairs ,其中pairs[i] = [xi, yi],并且满足:pairs中没有重复元素xi < yi令ways为满足下面条件的有根树的方案数:树所包含的所有节点值都在 pairs中。一个数对[xi, yi] 出现在pairs中当且仅当xi是yi的祖先或者yi是xi的祖先。注意:构造出来的树不一定是二叉树。两棵树被视为不同的方案当存在至少一个节点在两棵树中有不同的父节点。请你返回:如果ways == 0,返回0。...原创 2021-02-02 11:42:50 · 419 阅读 · 0 评论 -
JAVA程序设计:生成乘积数组的方案数(LeetCode:1735)
给你一个二维整数数组queries,其中 queries[i] = [ni, ki] 。第i个查询queries[i] 要求构造长度为ni 、每个元素都是正整数的数组,且满足所有元素的乘积为ki,请你找出有多少种可行的方案。由于答案可能会很大,方案数需要对 109 + 7取余 。请你返回一个整数数组answer,满足answer.length == queries.length,其中answer[i]是第i个查询的结果。示例 1:输入:queries = [[...原创 2021-01-30 23:11:26 · 365 阅读 · 0 评论 -
JAVA程序设计:解码异或后的排列(LeetCode:1734)
给你一个整数数组perm,它是前n个正整数的排列,且n是个 奇数。它被加密成另一个长度为 n - 1的整数数组encoded,满足encoded[i] = perm[i] XOR perm[i + 1]。比方说,如果perm = [1,3,2],那么encoded = [2,1]。给你encoded数组,请你返回原始数组perm。题目保证答案存在且唯一。示例 1:输入:encoded = [3,1]输出:[1,2,3]解释:如果 perm =...原创 2021-01-30 20:52:28 · 306 阅读 · 0 评论 -
JAVA程序设计:与数组中元素的最大异或值(LeetCode:1707)
给你一个由非负整数组成的数组 nums 。另有一个查询数组 queries ,其中 queries[i] = [xi, mi] 。第 i 个查询的答案是 xi 和任何 nums 数组中不超过 mi 的元素按位异或(XOR)得到的最大值。换句话说,答案是 max(nums[j] XOR xi) ,其中所有 j 均满足 nums[j] <= mi 。如果 nums 中的所有元素都大于 mi,最终答案就是 -1 。返回一个整数数组 answer 作为查询的答案,其中 answer.length ==原创 2020-12-29 18:09:45 · 351 阅读 · 0 评论 -
JAVA程序设计:得到连续 K 个 1 的最少相邻交换次数(LeetCode:5624)
给你一个整数数组nums和一个整数k。nums 仅包含0和1。每一次移动,你可以选择 相邻两个数字并将它们交换。请你返回使nums中包含k个 连续1的 最少交换次数。示例 1:输入:nums = [1,0,0,1,0,1], k = 2输出:1解释:在第一次操作时,nums 可以变成 [1,0,0,0,1,1] 得到连续两个 1 。示例 2:输入:nums = [1,0,0,0,0,0,1,1], k = 3输出:5解释:通过 5 次操作,最...原创 2020-12-28 18:26:48 · 1075 阅读 · 0 评论 -
JAVA程序设计:检查边长度限制的路径是否存在(LeetCode:5632)
给你一个 n 个点组成的无向图边集 edgeList ,其中 edgeList[i] = [ui, vi, disi] 表示点 ui 和点 vi 之间有一条长度为 disi 的边。请注意,两个点之间可能有 超过一条边 。给你一个查询数组queries ,其中 queries[j] = [pj, qj, limitj] ,你的任务是对于每个查询 queries[j] ,判断是否存在从 pj 到 qj 的路径,且这条路径上的每一条边都 严格小于 limitj 。请你返回一个 布尔数组 answer ,其中原创 2020-12-20 19:06:46 · 243 阅读 · 0 评论 -
JAVA程序设计:堆叠长方体的最大高度(LeetCode:1691)
给你 n 个长方体 cuboids ,其中第 i 个长方体的长宽高表示为 cuboids[i] = [widthi, lengthi, heighti](下标从 0 开始)。请你从 cuboids 选出一个 子集 ,并将它们堆叠起来。如果 widthi <= widthj 且 lengthi <= lengthj 且 heighti <= heightj ,你就可以将长方体 i 堆叠在长方体 j 上。你可以通过旋转把长方体的长宽高重新排列,以将它放在另一个长方体上。返回 堆叠长方体原创 2020-12-15 09:40:20 · 998 阅读 · 3 评论 -
JAVA程序设计:从仓库到码头运输箱子(LeetCode:1687)
你有一辆货运卡车,你需要用这一辆车把一些箱子从仓库运送到码头。这辆卡车每次运输有箱子数目的限制和 总重量的限制。给你一个箱子数组boxes和三个整数 portsCount, maxBoxes和maxWeight,其中boxes[i] = [portsi, weighti]。portsi表示第i个箱子需要送达的码头,weightsi是第i个箱子的重量。portsCount是码头的数目。maxBoxes 和maxWeight分别是卡车每趟运输箱子数目...原创 2020-12-15 09:21:11 · 1189 阅读 · 0 评论 -
JAVA程序设计:数组的最小偏移量(LeetCode:5616)
给你一个由 n 个正整数组成的数组 nums 。你可以对数组的任意元素执行任意次数的两类操作:如果元素是 偶数 ,除以 2例如,如果数组是 [1,2,3,4] ,那么你可以对最后一个元素执行此操作,使其变成 [1,2,3,2]如果元素是 奇数 ,乘上 2例如,如果数组是 [1,2,3,4] ,那么你可以对第一个元素执行此操作,使其变成 [2,2,3,4]数组的 偏移量 是数组中任意两个元素之间的 最大差值 。返回数组在执行某些操作之后可以拥有的 最小偏移量 。示例 1:输入:nu原创 2020-11-30 10:42:31 · 1148 阅读 · 0 评论 -
JAVA程序设计:使数组互补的最少操作次数(LeetCode:5615)
给你一个长度为 偶数 n 的整数数组 nums 和一个整数 limit 。每一次操作,你可以将 nums 中的任何整数替换为1到limit 之间的另一个整数。如果对于所有下标 i(下标从 0 开始),nums[i] + nums[n - 1 - i]都等于同一个数,则数组 nums 是 互补的 。例如,数组 [1,2,3,4] 是互补的,因为对于所有下标i ,nums[i] + nums[n - 1 - i] = 5 。返回使数组 互补 的 最少操作次数。示例 1:输入:n...原创 2020-11-29 20:03:47 · 563 阅读 · 0 评论 -
JAVA程序设计:单词矩阵(面试题 17.25)
给定一份单词的清单,设计一个算法,创建由字母组成的面积最大的矩形,其中每一行组成一个单词(自左向右),每一列也组成一个单词(自上而下)。不要求这些单词在清单里连续出现,但要求所有行等长,所有列等高。如果有多个面积最大的矩形,输出任意一个均可。一个单词可以重复使用。示例 1:输入: ["this", "real", "hard", "trh", "hea", "iar", "sld"]输出:[ "this", "real", "hard"]示例 2:输入: ["aa"...原创 2020-11-24 18:59:12 · 401 阅读 · 0 评论 -
JAVA程序设计:分配重复整数(LeetCode:1655)
给你一个长度为n的整数数组nums,这个数组中至多有50个不同的值。同时你有 m个顾客的订单 quantity,其中,整数quantity[i]是第i位顾客订单的数目。请你判断是否能将 nums中的整数分配给这些顾客,且满足:第i位顾客 恰好有quantity[i]个整数。第i位顾客拿到的整数都是 相同的。每位顾客都满足上述两个要求。如果你可以分配 nums中的整数满足上面的要求,那么请返回true,否则返回 false。示例 1:输...原创 2020-11-23 18:52:54 · 401 阅读 · 1 评论 -
第 215 场力扣周赛题解
先附上本次周赛排名:5601. 设计有序流思路:利用map模拟题目过程即可。class OrderedStream { int n, ptr; int[] arr; Map<Integer, String> map; public OrderedStream(int n) { ptr = 1; this.n = n; arr = new int[n + 1]; map = new原创 2020-11-15 13:10:18 · 465 阅读 · 0 评论 -
JAVA程序设计:最大子矩阵(面试题 17.24)
给定一个正整数、负整数和 0 组成的 N × M矩阵,编写代码找出元素总和最大的子矩阵。返回一个数组 [r1, c1, r2, c2],其中 r1, c1 分别代表子矩阵左上角的行号和列号,r2, c2 分别代表右下角的行号和列号。若有多个满足条件的子矩阵,返回任意一个均可。注意:本题相对书上原题稍作改动示例:输入:[ [-1,0], [0,-1]]输出:[0,1,0,1]解释:输入中标粗的元素即为输出所表示的矩阵说明:1 <= matrix.leng...原创 2020-11-03 12:27:14 · 977 阅读 · 1 评论 -
JAVA程序设计:矩阵转换后的秩(LeetCode:1632)
给你一个m x n的矩阵 matrix,请你返回一个新的矩阵answer,其中answer[row][col]是matrix[row][col]的秩。每个元素的秩是一个整数,表示这个元素相对于其他元素的大小关系,它按照如下规则计算:如果一个元素是它所在行和列的最小值,那么它的 秩为 1。如果两个元素p 和q在 同一行或者 同一列,那么:如果p < q ,那么rank(p) < rank(q)如果p == q,那么rank(p) == ra...原创 2020-10-27 22:44:22 · 723 阅读 · 0 评论 -
JAVA程序设计:多次搜索(面试题 17.17)
给定一个较长字符串big和一个包含较短字符串的数组smalls,设计一个方法,根据smalls中的每一个较短字符串,对big进行搜索。输出smalls中的字符串在big里出现的所有位置positions,其中positions[i]为smalls[i]出现的所有位置。示例:输入:big = "mississippi"smalls = ["is","ppi","hi","sis","i","ssippi"]输出: [[1,4],[8],[],[3],[1,4,7,10],[5]]提示:0原创 2020-10-27 16:13:26 · 384 阅读 · 0 评论 -
JAVA程序设计:第 k 个数(面试题 17.09)
有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。示例 1:输入: k = 5输出: 9思路:丑数变形,直接递推即可。class Solution { public int getKthMagicNumber(int k) { int p1 = 0, p2 = 0, p3 = 0; int[] dp = new int原创 2020-10-24 15:50:56 · 710 阅读 · 0 评论