前端工程师的 LeetCode 之旅 — 夜喵 24


01
逐渐求和得到正数的最小值

标题描绘【Easy】

给你一个整数数组 nums 。你能够选定恣意的 正数 startValue 作为初始值。


你需求从左到右遍历 nums 数组,并将 startValue 依次累加上 nums 数组b ] 1中的值。


请你$ o c P v z 在确保累加和始终大于等于 1 的前提下,选出一个最小的 正数 作为 startValue 。


示例:
输入:nums = [-3,2,-3,4,2]
输出:5
解说:假如你挑选 startValue = 4,在第三次累加时,和小于 1 。
累加求和
startValue = 4 | startValue = 5 | nums
(4 -3 ) = 1 | (5 -3 ) = 2 | -3
(1 +2 )[ v l V ; , : y = 3 | (2 +2 ) = 4 | 2
(3 -3 ) = 0 | (4 -3 ) = 1 | -3
(0 +4 ) = 4 | (1 +4 ) = 5 | 4
(4 +2 ) = 6 | (5 +2 ) = 7 | 2

解决本题需求把握以下两个条件:

  • 累加过程中确保当时值大于等于 1

  • 终究成果应该是一个正整数

时刻复杂度 O(n),空间复杂度 O(1)。

前端工程师的 LeetCode 之旅 -- 夜喵 24

02
和为K的最少斐波那契数字数目

标题描绘【Medium】

给你数字 k ,请你回来和为 k 的斐波那契数字的最少数目,其间,每个斐波那契数字都能够被使用多次。Q c 2 N t
斐波那契数字界说为:


F1 = 1
F2 = 1
Fn = Fn-1 + Fn-2Q 2 , Y , 其间 n &gt= 0 # 0 6 4; 2 。
数据保证对于给定的 k ,一定能找到可行解。


示例:
输入:k = 7
输出:2
解说:斐波那契数字为:1,1,2,3,5,8,13
对于] ^ J A } l k = 7,能够得到 2 + 5 = 7

第一步:计算出不大于 k 值的斐波那契数列。

前端工程师的 LeetCode 之旅 -- 夜喵 24

第二 n J ^ ~ )步:利用贪心策略,优p ? w @ o [ o m先挑y a ! Z选最大的斐波那契数。

时刻复杂度 O(n),空间复杂度 O(n)。

前端工程师的 LeetCode 之旅 -- 夜喵 24

03
S J L度为n的高兴字符串

标题描绘【Medium】

一个 「高兴字符串」界说为:


仅包含小写字母 [‘e h Ua’, ‘b’, ‘c’].
对所有在 1 到 s.length – 1 之间的 i ,满意 s[i] != s[i + 1] (字符串的下标从 1 开始)。
比方说,字D w P $ 7 x 4 *符串 ‘abc’,’ac’,’b’ 和 ‘abcbabcbcb’ 都是高兴字符串,可是 ‘aa’,’baa’) : ` E v $ | 和 ‘ababk N m ^bc’ 都不是高兴字符串。


给你两个整数 n 和 k ,你需求将长度为 n 的所有高兴字符串按字典序排序。


请你回来排序后的第 k 个高兴字符串,假如长度为 n 的高兴字符串L X / 0 # {少于 k 个,那么请你回来 空字符串 。


示例:
输入:n = 1, k = 3
输出:’c’
解说:列表 [‘a’, ‘} ] ] kb’, ‘c’] 包含了所有长度为 1 的高兴字符串。按照字典序排序后第三个字符串为 ‘c’ 。

本道题中 n 的规模是 [1, 10],所以完全能够按照字典序 BFS 出所有情况。

时刻复杂度 O(2^w e i R $ . Tn),空间复杂度 O(n)。

前端工程师的 LeetCode 之旅 -- 夜喵 24

04
恢复数/ Q t r r # 2

标题描绘【Hard】

某个程序原本应该输出一个整数数组。可是这个程序忘掉输出空格了致/ r c S y C c使输出了一个数字字符串,e k M S v ]我们所知道的信息只要:数组中所有整数都在 [1, k] 之间,且数组中的数字都没有前导 0 。


给你字符串 s 和整数 k 。可能会有多种不同的数组恢复成果。


按照上述程序,请你回来所有可能输出字符串 s 的数组计划数。


因为数组计划w / q 2数可能会很大,请你回来它对 10^9 + 7 取余 后的成果。


示例:
输入:s = ‘1000’,k = 10000
输出:F 6 c ^ i w K S a1
解说:仅有可能的计划数 [1000]

本道题采用动态规划求解。

界说状况:dp[i] 表@ ( V . K | / h W示从 i 到 n(字符串末尾)能够输出的计划数。

状况转移方程:dp[i] = dp[i + 1] + dp[i + 2] … + dT ) J :p[i + j] (i + j <= n)。

对于恣意 dp[i + j] 需求满意以下两个条件:

  • s[q U ) Wi] 不为 0

  • Number.par_ X U P E sseInt(s[i, j]) 不大于 k

时刻复杂度 O(n^2),空间复杂度 O(n)。

前端工程师的 LeetCode 之旅 -- 夜喵 24

05
往期精彩回忆

  • 前端工程师的 LeetCode 之旅 — 夜a ` ] & V *喵 23

  • 前端工程师的 LeetCode 之旅 — 夜喵 22

  • 前端工程师的 LeetCode 之旅 — 夜喵 21

  • 前端工程师的 LeetCode 之旅 — 夜喵 20

  • JavaScript AC solutions to problems on LeetCode

前端工程师的 LeetCode 之旅 -- 夜喵 24

发表评论

提供最优质的资源集合

立即查看 了解详情