- 博客(110)
- 资源 (1)
- 收藏
- 关注
原创 337. 打家劫舍 III-每日一题
一、题目 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。 计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。点击查看原题难度级别: 中等二、思路1)动态规划 可以归纳为两种情况,即选当前节点,和不选当前节点的情况,我们使
2021-10-11 11:17:41
112
原创 583. 两个字符串的删除操作-每日一题
一、题目 给定两个单词 _word1 _和 word2,找到使得 _word1 _和 _word2 _相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。点击查看原题难度级别: 中等二、思路1)动态规划 该题可以将问题转化为寻找两个字符串中相同的最长字符序列 让dp[i][j]为word2[0, i-1]和word2[0, j-1]相同最长字符序列长度,那么可以得到状态转移方程:dp[i][j]={dp[i−1][j−1]+1,word1[i]==word2[j]max(d
2021-09-25 16:44:15
205
原创 430. 扁平化多级双向链表-每日一题
一、题目 多级双向链表中,除了指向下一个节点和前一个节点指针之外,它还有一个子链表指针,可能指向单独的双向链表。这些子列表也可能会有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。 给你位于列表第一级的头节点,请你扁平化列表,使所有结点出现在单级双链表中。点击查看原题难度级别: 中等二、思路1)DFS 优先遍历孩子链表,将next链表链接在孩子链表尾部 使用dfs函数,认为dfs函数会返回该链表的尾部节点,拿到尾部链表节点后,插入在当前遍历节点cur和cu
2021-09-24 10:43:32
134
原创 650. 只有两个键的键盘-每日一题
一、题目 最初记事本上只有一个字符 ‘A’ 。你每次可以对这个记事本进行两种操作:Copy All(复制全部):复制这个记事本中的所有字符(不允许仅复制部分字符)。Paste(粘贴):粘贴 上一次 复制的字符。 给你一个数字 n ,你需要使用最少的操作次数,在记事本上输出 恰好 n 个 ‘A’ 。返回能够打印出 n 个 ‘A’ 的最少操作次数。点击查看原题难度级别: 中等二、思路1)动态规划 题中给出的操作,只能使用复制和粘贴两种操作,且每次复制都只能复制所有字符串
2021-09-19 16:04:45
81
原创 560. 和为K的子数组
一、题目 给定一个整数数组和一个整数 **k,**你需要找到该数组中和为 **k **的连续的子数组的个数。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 **k **的范围是 [-1e7, 1e7]。点击查看原题难度级别: 中等二、思路1)前缀和+HashMap 本题种k不一定为正数,那不能单纯从大于小于连续元素的和进行判断。 利用前缀和可以得到sum[0,j],如果要求sum[i,j],直接使用前缀和进行相减即可。
2021-09-06 11:13:48
68
原创 排序(冒泡、插入、归并、快排、堆)和java中的sort
一、通用排序算法 定义通用函数swap,用于交换两个槽位的数值public void swap(int[] nums, int i, int j) { int t = nums[i]; nums[i] = nums[j]; nums[j] = t; }1)冒泡排序 冒泡排序,顾名思义,就是不断将较大(小)的元素移动到最后,形成有序数组 此处使用了一个优化:扫描一遍,没有元素发生交换,就说明已经是有序了public void bubb
2021-09-06 11:13:00
78
原创 215. 数组中的第K个最大元素
一、题目 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。点击查看原题难度级别: 中等二、思路1)优先队列 建立一个优先队列,小根堆;当队列容量小于k时,直接插入;当容量等于k时,如果元素大于堆顶元素,那么取出堆顶元素,插入新元素三、代码1)优先队列class Solution { public int findKthLargest(int[] nums, int
2021-09-02 11:16:11
96
原创 528. 按权重随机选择-每日一题
一、题目 给定一个正整数数组 w ,其中 w[i] 代表下标 i 的权重(下标从 0 开始),请写一个函数 pickIndex ,它可以随机地获取下标 i,选取下标 i 的概率与 w[i] 成正比。 例如,对于 w = [1, 3],挑选下标 0 的概率为 1 / (1 + 3) = 0.25 (即,25%),而选取下标 1 的概率为 3 / (1 + 3) = 0.75(即,75%)。 也就是说,选取下标 i 的概率为 w[i] / sum(w) 。点击查看原题难度级别: 中等二、思路
2021-08-30 11:46:35
145
原创 295. 数据流的中位数-每日一题
一、题目 中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。 例如, [2,3,4] 的中位数是 3 [2,3] 的中位数是 (2 + 3) / 2 = 2.5 设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前所有元素的中位数。点击查看原题难度级别: 困难二、思路1)数组存数据+二分查找+线性插入 用一个ArrayLi
2021-08-27 11:05:11
93
原创 881. 救生艇-每日一题
一、题目 第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit。 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。 返回载到每一个人所需的最小船数。(保证每个人都能被船载)。点击查看原题难度级别: 中等二、思路1)贪心 由于每艘船最多可以同时载两个人,假设现在最瘦的人体重为min,最胖的人为max,有:如果min+max超重,那么max只能自己坐一艘船如果min+max没有超重,那么两人坐同一艘船三、代码1)贪心cla
2021-08-26 10:29:01
94
原创 797. 所有可能的路径
一、题目 给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特定顺序) 二维数组的第 i 个数组中的单元都表示有向图中 i 号节点所能到达的下一些节点,空就是没有下一个结点了。 译者注:有向图是有方向的,即规定了 a→b 你就不能从 b→a 。点击查看原题难度级别: 中等二、思路1)DFS 由于数据保证是有向无环,那么不用使用visited记录访问过的节点来避免环 直接使用DFS进行遍历,每当能够到达n-1节点就记录下来
2021-08-26 10:14:11
144
原创 787. K 站中转内最便宜的航班-每日一题
一、题目 有 n 个城市通过一些航班连接。给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,以价格 toi 抵达 pricei。 现在给定所有的城市和航班,以及出发城市 src 和目的地 dst,你的任务是找到出一条最多经过 k 站中转的路线,使得从 src 到 dst 的 价格最便宜 ,并返回该价格。 如果不存在这样的路线,则输出 -1。点击查看原题难度级别: 中等二、思路1)动态规划 使用
2021-08-24 11:34:16
143
原创 1646. 获取生成数组中的最大值-每日一题
一、题目 给你一个整数 n 。按下述规则生成一个长度为 n + 1 的数组 nums :nums[0] = 0nums[1] = 1当 2 <= 2 * i <= n 时,nums[2 * i] = nums[i]当 2 <= 2 * i + 1 <= n 时,nums[2 * i + 1] = nums[i] + nums[i + 1] 返回生成数组 nums 中的 最大值。点击查看原题难度级别: 简单二、思路1)数组记录 根据数据规则,i位置的
2021-08-23 14:56:33
341
原创 789. 逃脱阻碍者-每日一题
一、题目 你在进行一个简化版的吃豆人游戏。你从 [0, 0] 点开始出发,你的目的地是 target = [xtarget, ytarget] 。地图上有一些阻碍者,以数组 ghosts 给出,第 i 个阻碍者从 ghosts[i] = [xi, yi] 出发。所有输入均为 整数坐标 。 每一回合,你和阻碍者们可以同时向东,西,南,北四个方向移动,每次可以移动到距离原位置 1 个单位 的新位置。当然,也可以选择 不动 。所有动作 同时 发生。 如果你可以在任何阻碍者抓住你 之前 到达目的地(阻碍
2021-08-22 10:17:55
113
原创 200. 岛屿数量-每日一题
一、题目 给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。点击查看原题难度级别: 中等二、思路1)DFS 使用visited记录进行深度搜索过的空格,不会重复计数岛屿(这里可以使用原本的数组空间进行优化,这里本着不想更改源数据的想法进行编码),每进行一次dfs,岛屿数量自增一2)并查集 并查集可以将连在一起的格子都指
2021-08-18 14:46:14
81
原创 516. 最长回文子序列-每日一题
一、题目 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。点击查看原题难度级别: 中等二、思路1)动态规划 设立二维数组dp[i][j]为s[i,j]最长的回文子序列,可以得到状态转移方程:dp[i][j]={dp[i+1][j−1]+2,s[i]==s[j]max(dp[i][j−1],dp[i+1][j]),elsedp[i][j]=\left\{\begin{matrix
2021-08-12 10:39:57
85
原创 114. 二叉树展开为链表
一、题目 给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。点击查看原题难度级别: 中等二、思路1)数组记录 进行线序遍历,记录下遍历的节点,然后再统一修改指针2)递归 定义flatten函数能够将其改为单链表,所以,进行先序遍历,先将左右子树进行递归,整理成单链表后,遍历左孩子单链表到尾节点,与
2021-08-11 13:00:49
61
原创 413. 等差数列划分-每日一题
一、题目 如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。 给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。 子数组 是数组中的一个连续序列。点击查看原题难度级别: 中等二、思路1)公差+计数 所求子数组为原数组的连续序列,如果有公差为d的子数组长度为m,那么可以划分为满足题意子数组个数为:(m−3+1)+(m−
2021-08-10 09:06:19
127
原创 313. 超级丑数-每日一题
一、题目 超级丑数 是一个正整数,并满足其所有质因数都出现在质数数组 primes中。 给你一个整数 n和一个整数数组 primes,返回第 n个 超级丑数 。 题目数据保证第 n个 超级丑数 在 32-bit带符号整数范围内。点击查看原题难度级别: 中等二、思路1)动态规划 建立一个数组dp[i]代表第i个超级丑数的值,建立products[j]数组和points[k]数组,每次在products数组中找到最小值即当前遍历到的超级丑数,points[j]自增,products[j]
2021-08-09 16:45:54
85
原创 85. 最大矩形
一、题目 给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。点击查看原题难度级别:困难二、思路1)记录竖向连续1数量 定义一个数组cnt[col],代表遍历到当前matrix中row行col列,matrix中从当前位置竖直向上计数,连续为‘1’的计数。 当且仅当cnt从i到j(j<=i)不存在0时,构成矩形,记录下cnt[i,j]的最小值minHigh,则矩形的面积为minHigh*(i-j+1)三、代码1
2021-08-08 16:07:23
56
原创 802. 找到最终的安全状态-每日一题
一、题目 在有向图中,以某个节点为起始节点,从该点出发,每一步沿着图中的一条有向边行走。如果到达的节点是终点(即它没有连出的有向边),则停止。 对于一个起始节点,如果从该节点出发,无论每一步选择沿哪条有向边行走,最后必然在有限步内到达终点,则将该起始节点称作是 安全 的。 返回一个由图中所有安全的起始节点组成的数组作为答案。答案数组中的元素应当按 升序 排列。 该有向图有 n 个节点,按 0 到 n - 1 编号,其中 n 是 graph 的节点数。图以下述形式给出:graph[i] 是编号
2021-08-05 21:31:58
52
原创 42. 接雨水
一、题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。点击查看原题难度级别:困难二、思路1)单调递减栈 根据暴力法的思路:遍历每个元素,针对每个元素又遍历之前的元素,只需要计算到大于当前元素的值即可(或没有大于的)。 可以使用一个单调递减栈,将递减序列记录下来,(想一下,就算两个递减序列值中间间隔很远,中间很多水,但已经计算过了,不需要重复计算)。只需要计算当前元素的存在,多留下多少水即可。具体考虑如下: 第一步:当前元素>
2021-08-04 12:52:16
49
原创 581. 最短无序连续子数组-每日一题
一、题目 给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。 请你找出符合题意的 最短 子数组,并输出它的长度。点击查看原题难度级别:中等二、思路 暴力方法就是将数组进行排序,然后从两端扫描,与排序之前的数组进行对比,就可以找到需要进行排序的最短子数组1)单调性判断+一次扫描 根据官方题解,先讲解概念,将数组分为连续的三个部分,numsa、numsb、numsc,其中numsa为有序的最小部分、numsb为需要排序
2021-08-03 10:50:40
85
原创 739. 每日温度
一、题目 请根据每日 气温 列表 temperatures ,请计算在每一天需要等几天才会有更高的温度。如果气温在这之后都不会升高,请在该位置用 0 来代替。点击查看原题难度级别: 中等二、思路1)单调栈 使用暴力法求解思路是很明确的,双重循环,每遍历到一个元素,就向后找到第一次比它大的数字,找不到就为0 思考一下,可不可以用一种数据结构存储后面元素的递增序列,这样就可以直接找到后面元素出现刚好比当前元素的较大值,那就是单调栈,单调栈递减栈的特点:如果当前元素比栈顶元素大,则出栈,
2021-08-02 08:11:51
82
原创 456. 132 模式
一、题目 给你一个整数数组 nums ,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 nums[i] < nums[k] < nums[j] 。 如果 nums 中存在 132 模式的子序列 ,返回 true ;否则,返回 false 。点击查看原题难度级别: 中等二、思路1)TreeMap 使用暴力法,将会先确定j位置,找到j位置元素之前的最小值nums[i
2021-07-31 08:28:40
88
原创 1104. 二叉树寻路-每日一题
一、题目 在一棵无限的二叉树上,每个节点都有两个子节点,树中的节点 逐行 依次按 “之” 字形进行标记。 如下图所示,在奇数行(即,第一行、第三行、第五行……)中,按从左到右的顺序进行标记; 而偶数行(即,第二行、第四行、第六行……)中,按从右到左的顺序进行标记。 给你树上某一个节点的标号 label,请你返回从根节点到该标号为 label 节点的路径,该路径是由途经的节点标号所组成的。点击查看原题难度级别: 中等二、思路1)数学方法 树为满二叉树的情况下,可以根据孩子节点确定
2021-07-29 11:30:32
87
原创 863. 二叉树中所有距离为 K 的结点-每日一题
一、题目 给定一个二叉树(具有根结点 root), 一个目标结点 target ,和一个整数值 K 。 返回到目标结点 target 距离为 K 的所有结点的值的列表。 答案可以以任何顺序返回。点击查看原题难度级别: 中等二、思路1)哈希表+深度搜索 如果使用递归的方式查找到target节点上方或旁边距离为k的节点,逻辑比较复杂 于是使用哈希表建立起来子节点与父节点的映射关系,二叉树就变成了三叉树,只需要以target节点为root,进行深度搜索,就可以找到距离k的所有节点(tips
2021-07-28 09:47:22
67
原创 1877. 数组中最大数对和的最小值-每日一题
一、题目 一个数对 (a,b) 的 数对和 等于 a + b 。最大数对和 是一个数对数组中最大的 数对和 。比方说,如果我们有数对 (1,5) ,(2,3) 和 (4,4),最大数对和 为 max(1+5, 2+3, 4+4) = max(6, 5, 8) = 8 。 给你一个长度为 偶数 n 的数组 nums ,请你将 nums 中的元素分成 n / 2 个数对,使得:nums 中每个元素 恰好 在 一个 数对中,且最大数对和 的值 最小 。 请你在最优数对划分的方案下
2021-07-20 13:42:28
116
原创 1838. 最高频元素的频数-每日一题
一、题目 元素的 频数 是该元素在一个数组中出现的次数。 给你一个整数数组 nums 和一个整数 k 。在一步操作中,你可以选择 nums 的一个下标,并将该下标对应元素的值增加 1 。 执行最多 k 次操作后,返回数组中最高频元素的 最大可能频数 。点击查看原题难度级别:中等二、思路1)排序+暴力搜索 由于对数字只进行增加1的操作,那么选定一个nums[i]后,只有对它小的数字进行操作才会增加其数量,所以先进行排序,这样比nums[i]小的元素都在其左侧,又由于每次只能增加1,那么
2021-07-19 14:40:12
66
原创 面试题 10.02. 变位词组-每日一题
一、题目 编写一种方法,对字符串数组进行排序,将所有变位词组合在一起。变位词是指字母相同,但排列不同的字符串。点击查看原题难度级别:中等二、思路1)hashmap+排序 本题也是需要善于使用数据结构,就可以快速解出 变位词的特征是字符出现次数相同的词,那么,所有变位词进行排序后组成的字符串是相等的(字符串内容相等,hashcode也是相等的),可以利用这个原理使用hashmap将变位词放在一起三、代码1)hashmap+排序class Solution { public L
2021-07-18 09:59:48
78
原创 剑指 Offer 42. 连续子数组的最大和-每日一题
一、题目 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。点击查看原题难度级别:简单二、思路1)动态规划 可以将问题抽象出来,dp[i]表示以i位置数字结尾的连续子数组最大和的值,那么dp[i+1]的值只依赖于dp[i],其中:若dp[i]<0,则dp[i+1]=nums[i+1]若dp[i]>0,则dp[i+1]=nums[i+1]+dp[i] 记录dp数组中最大的值,就为本题答案 由于后一个
2021-07-17 09:57:56
65
原创 剑指 Offer 53 - I. 在排序数组中查找数字 I-每日一题
一、题目 统计一个数字在排序数组中出现的次数。点击查看原题难度级别: 简单二、思路1)二分法 统计数字在排序数组中出现次数,由于数组是从小到大排序好的,该过程分为两步:第一步找到数字位置,采用二分法查找更快速第二步,根据找到数字的位置向两边搜索并统计三、代码1)二分法class Solution { public int search(int[] nums, int target) { int ans = 0; int loc = fin
2021-07-16 10:05:40
48
原创 1846. 减小和重新排列数组后的最大元素-每日一题
一、题目 给你一个正整数数组 arr 。请你对 arr 执行一些操作(也可以不进行任何操作),使得数组满足以下条件:arr 中 第一个 元素必须为 1 。任意相邻两个元素的差的绝对值 小于等于 1 ,也就是说,对于任意的 1 <= i < arr.length (数组下标从 0 开始),都满足 abs(arr[i] - arr[i - 1]) <= 1 。abs(x) 为 x 的绝对值。 你可以执行以下 2 种操作任意次:减小 arr 中任意元素的值,使其变为一个 更小
2021-07-15 09:56:42
97
原创 1818. 绝对差值和-每日一题
一、题目 给你两个正整数数组 nums1 和 nums2 ,数组的长度都是 n 。 数组 nums1 和 nums2 的 绝对差值和 定义为所有 |nums1[i] - nums2[i]|(0 <= i < n)的 总和(下标从 0 开始)。 你可以选用 nums1 中的 任意一个 元素来替换 nums1 中的 至多 一个元素,以 最小化 绝对差值和。 在替换数组 nums1 中最多一个元素 之后 ,返回最小绝对差值和。因为答案可能很大,所以需要对 109 + 7 取余 后返回。
2021-07-14 11:26:24
117
原创 275. H 指数 II-每日一题
一、题目 给定一位研究者论文被引用次数的数组(被引用次数是非负整数),数组已经按照 升序排列 。编写一个方法,计算出研究者的 h 指数。 h 指数的定义: “h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。(其余的 N - h 篇论文每篇被引用次数不多于 h 次。)"进阶:这是 H 指数 的延伸题目,本题中的 citations 数组是保证有序的。你可以优化你的算法到对数时间复杂度吗?
2021-07-12 09:48:28
101
原创 274. H 指数-每日一题
一、题目 给定一位研究者论文被引用次数的数组(被引用次数是非负整数)。编写一个方法,计算出研究者的 h 指数。 h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。且其余的 N - h 篇论文每篇被引用次数 不超过 h 次。 例如:某人的 h 指数是 20,这表示他已发表的论文中,每篇被引用了至少 20 次的论文总共有 20 篇。点击查看原题难度级别: 中等二、思路1)
2021-07-11 11:17:50
152
原创 981. 基于时间的键值存储-每日一题
一、题目 创建一个基于时间的键值存储类 TimeMap,它支持下面两个操作:set(string key, string value, int timestamp)存储键 key、值 value,以及给定的时间戳 timestamp。get(string key, int timestamp)返回先前调用 set(key, value, timestamp_prev) 所存储的值,其中 timestamp_prev <= timestamp。如果有多个这样的值,则返回对应最
2021-07-10 14:35:40
74
原创 面试题 17.10. 主要元素-每日一题
一、题目 数组中占比超过一半的元素称之为主要元素。给你一个 整数 数组,找出其中的主要元素。若没有,返回 -1 。请设计时间复杂度为 O(N) 、空间复杂度为 O(1) 的解决方案。点击查看原题难度级别: 简单二、思路1)投票+验证 如果一个数出现的次数大于这个数组长度的一半,使用投票算法可以得到这个数: 用候选人变量记录选中的元素和该元素出现的次数,在遍历的时候,如果出现非候选人变量,则候选人变量出现次数减一,当减到0,就更换候选人变量的值为当前遍历到的数组元素,由于主要元素出现次数
2021-07-09 09:36:16
86
原创 930. 和相同的二元子数组-每日一题
一、题目 给你一个二元数组 nums ,和一个整数 goal ,请你统计并返回有多少个和为 goal 的** 非空** 子数组。子数组 是数组的一段连续部分。点击查看原题难度级别: 中等二、思路1)前缀和+哈希表 根据前缀和的思想,连续数组[i, j]之和等于两个前缀和之差 使用哈希表找到我们需要的前缀和就可以知道:以位置j结尾,有多少个连续数组满足和为goal三、代码1)前缀和+哈希表class Solution { public int numSubarraysWit
2021-07-08 11:59:48
68
原创 1711. 大餐计数-每日一题
一、题目 大餐 是指 恰好包含两道不同餐品 的一餐,其美味程度之和等于 2 的幂。 你可以搭配 任意 两道餐品做一顿大餐。 给你一个整数数组 deliciousness ,其中 deliciousness[i] 是第 i道餐品的美味程度,返回你可以用数组中的餐品做出的不同 大餐 的数量。结果需要对 10^9 + 7取余。 注意,只要餐品下标不同,就可以认为是不同的餐品,即便它们的美味程度相同。点击查看原题难度级别: 中等二、思路1)哈希表 直接想到暴力法的求解,就是使用O(n^2
2021-07-07 11:32:58
90
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人