LeetCode 第 24 场双周赛(326/1898,前17.2%)

文章目录

    • 1. 比赛结果
    • 2. 题目
      • 1. LeetCode 5372. 逐步求和得到正数的最小值 easy
      • 2. LeetCode 5373. 和为 K 的最少斐波那契数字数目 medium
      • 3. LeetCode 5374. 长度为 n 的开心字符串中字典序第 k 小的字符串 medium
      • 4. LeetCode 5375. 恢复数组 hard

1. 比赛结果

做出来了 1、2、3 题,32分钟做出来3题,感觉有点蒙过来。第4题实在没思路,继续加油!

全国排名:326 / 1898,17.2%;全球排名:1218 / 7729,15.8%
在这里插入图片描述
在这里插入图片描述

2. 题目

1. LeetCode 5372. 逐步求和得到正数的最小值 easy

题目链接
给你一个整数数组 nums 。你可以选定任意的 正数 startValue 作为初始值。

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

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

示例 1:
输入:nums = [-3,2,-3,4,2]
输出:5
解释:如果你选择 startValue = 4,在第三次累加时,和小于 1 。累加求和startValue = 4 | startValue = 5 | nums(4 -3 ) = 1  | (5 -3 ) = 2    |  -3(1 +2 ) = 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示例 2:
输入:nums = [1,2]
输出:1
解释:最小的 startValue 需要是正数。示例 3:
输入:nums = [1,-2,-3]
输出:5提示:
1 <= nums.length <= 100
-100 <= nums[i] <= 100

解答:

  • 一直加自己的,不够就补,取最大的
class Solution {
public:int minStartValue(vector<int>& nums) {int val=1, i, sum=0;for(i = 0; i < nums.size(); ++i){sum += nums[i];if(sum >= 1)continue;elseval = max(val, 1-sum);}return val;}
};

2. LeetCode 5373. 和为 K 的最少斐波那契数字数目 medium

题目链接
给你数字 k ,请你返回和为 k 的斐波那契数字的最少数目,其中,每个斐波那契数字都可以被使用多次。

斐波那契数字定义为:
F1 = 1
F2 = 1
Fn = Fn-1 + Fn-2 , 其中 n > 2 。
数据保证对于给定的 k ,一定能找到可行解。
示例 1:
输入:k = 7
输出:2 
解释:斐波那契数字为:11235813,……
对于 k = 7 ,我们可以得到 2 + 5 = 7 。示例 2:
输入:k = 10
输出:2 
解释:对于 k = 10 ,我们可以得到 2 + 8 = 10 。示例 3:
输入:k = 19
输出:3 
解释:对于 k = 19 ,我们可以得到 1 + 5 + 13 = 19 。提示:
1 <= k <= 10^9

解题:

  • 先生成斐波那契数列,插入set
  • 贪心,在set中找小于k的最大数
class Solution {
public:int findMinFibonacciNumbers(int k) {set<int> s;s.insert(1);int a = 1, b =1, fn=1, end = 1000000000;while(fn <= end){fn = a+b;a = b;b = fn;s.insert(fn);}int count = 0;while(k!=0){auto it = s.upper_bound(k);k -= *(--it);count++;}return count;}
};

16 ms 8 MB

3. LeetCode 5374. 长度为 n 的开心字符串中字典序第 k 小的字符串 medium

题目链接
一个 「开心字符串」定义为:

  • 仅包含小写字母 [‘a’, ‘b’, ‘c’].
  • 对所有在 1 到 s.length - 1 之间的 i ,满足 s[i] != s[i + 1] (字符串的下标从 1 开始)。

比方说,字符串 “abc”,“ac”,“b” 和 “abcbabcbcb” 都是开心字符串,但是 “aa”,“baa” 和 “ababbc” 都不是开心字符串。

给你两个整数 n 和 k ,你需要将长度为 n所有开心字符串按字典序排序。

请你返回排序后的第 k 个开心字符串,如果长度为 n 的开心字符串少于 k 个,那么请你返回 空字符串 。

示例 1:
输入:n = 1, k = 3
输出:"c"
解释:列表 ["a", "b", "c"] 包含了所有长度为 1 的开心字符串。
按照字典序排序后第三个字符串为 "c" 。示例 2:
输入:n = 1, k = 4
输出:""
解释:长度为 1 的开心字符串只有 3 个。示例 3:
输入:n = 3, k = 9
输出:"cab"
解释:长度为 3 的开心字符串总共有 12["aba", "abc", "aca", "acb", "bab", "bac", 
"bca", "bcb", "cab", "cac", "cba", "cbc"] 。
第 9 个字符串为 "cab"示例 4:
输入:n = 2, k = 7
输出:""示例 5:
输入:n = 10, k = 100
输出:"abacbabacb"提示:
1 <= n <= 10
1 <= k <= 100

解题:

  • dfs搜索即可,且是按字典序排列的
class Solution {char ch[3] = {'a','b','c'};vector<string> ans;string s;int N, K;
public:string getHappyString(int n, int k) {N = n;K = k;dfs(s);if(k > ans.size())return "";return ans[k-1];}void dfs(string s){if(ans.size()>=K)return;if(s.size()==N){ans.push_back(s);return;}for(int i = 0; i < 3; ++i){if(s.empty() || s.back()!=ch[i])dfs(s+ch[i]);}}
};

20 ms 8 MB

4. LeetCode 5375. 恢复数组 hard

题目链接

某个程序本来应该输出一个整数数组。
但是这个程序忘记输出空格了以致输出了一个数字字符串,
我们所知道的信息只有:数组中所有整数都在 [1, k] 之间,且数组中的数字都没有前导 0 。

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

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

由于数组方案数可能会很大,请你返回它对 10^9 + 7 取余 后的结果。

示例 1:
输入:s = "1000", k = 10000
输出:1
解释:唯一一种可能的数组方案是 [1000]示例 2:
输入:s = "1000", k = 10
输出:0
解释:不存在任何数组方案满足所有整数都 >= 1<= 10 同时输出结果为 s 。示例 3:
输入:s = "1317", k = 2000
输出:8
解释:可行的数组方案为 [1317][131,7][13,17][1,317][13,1,7][1,31,7][1,3,17][1,3,1,7]示例 4:
输入:s = "2020", k = 30
输出:1
解释:唯一可能的数组方案是 [20,20][2020] 不是可行的数组方案,原因是 2020 > 30[2,020] 也不是可行的数组方案,因为 020 含有前导 0 。示例 5:
输入:s = "1234567890", k = 90
输出:34提示:
1 <= s.length <= 10^5.
s 只包含数字且不包含前导 01 <= k <= 10^9.

解题:

  • 知道是DP,做不出来
  • 参考评论区Zakl 的解答

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476455.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

货物与产品的区别_超市货架和仓储式货架有什么区别?

在生活中&#xff0c;超市货架和仓储货架咱们都叫货架&#xff0c;这样导致了很多客户都认为货架不就是超市里面摆货的那个货架吗&#xff1f;其实&#xff0c;虽然两种都叫货架&#xff0c;两者之间都有存储功能&#xff0c;但还有其它的区别。仓库货架注重的是存储量和承重量…

详细解析Java中抽象类和接口的区别

详细解析Java中抽象类和接口的区别 在Java语言中&#xff0c; abstract class 和interface 是支持抽象类定 义的两种机制。正是由于这两种机制的存在&#xff0c;才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性&a…

LeetCode 1417. 重新格式化字符串

1. 题目 给你一个混合了数字和字母的字符串 s&#xff0c;其中的字母均为小写英文字母。 请你将该字符串重新格式化&#xff0c;使得任意两个相邻字符的类型都不同。 也就是说&#xff0c;字母后面应该跟着数字&#xff0c;而数字后面应该跟着字母。 请你返回 重新格式化后 …

[分享]天轰穿VS2005视频教程

谈到学习,虽然有很多很多人有自己一套的自学方法. 但有时候,有个好的老师来教,一个好的拍档一同促进也是十分重要的. 就在一个星期前我偶然在Google上点入了天轰穿的blog 发现里面的VS2005视频教程对于一些新学.net的朋友是在是太有帮助了 从基础到高级应用都能够涉及到,实在是…

svn忽略指定文件夹下的文件_管理SteamLibrary文件夹下的acf文件

管理SteamLibrary文件夹下的acf文件众所周知&#xff0c;steam中下载的游戏会在SteamLibrarysteamappscommon文件夹下创建一个以游戏名称为名的文件夹用来存放文件&#xff0c;并在SteamLibrarysteamapps文件夹下创建一个acf文件&#xff0c;里面储存着游戏的一些信息&#xff…

LeetCode 1418. 点菜展示表(哈希map)

1. 题目 给你一个数组 orders&#xff0c;表示客户在餐厅中完成的订单&#xff0c;确切地说&#xff0c; orders[i][customerNamei,tableNumberi,foodItemi] &#xff0c;其中 customerNamei 是客户的姓名&#xff0c;tableNumberi 是客户所在餐桌的桌号&#xff0c;而 foodIt…

深入分析驴子系列(2)

在 BOOL CemuleApp::InitInstance() 函数 的 672行&#xff08;VERIFY( (m_hTimer ::SetTimer(NULL, NULL, 300, StartupTimer)) ! NULL ); &#xff09; 启动一个定时器 在该定时器的 执行函数&#xff08; void CALLBACK CemuleDlg::StartupTimer(HWND /*hwnd*/, UINT /*uiM…

python现在时间 命令_Python3 - 时间处理与定时任务

1.计算明天和昨天的日期#! /usr/bin/env python#codingutf-8# 获取今天、昨天和明天的日期# 引入datetime模块import datetime#计算今天的时间today datetime.date.today()#计算昨天的时间yesterday today - datetime.timedelta(days 1)#计算明天的时间tomorrow today dat…

LeetCode 1419. 数青蛙(脑洞题)

1. 题目 给你一个字符串 croakOfFrogs&#xff0c;它表示不同青蛙发出的蛙鸣声&#xff08;字符串 “croak” &#xff09;的组合。 由于同一时间可以有多只青蛙呱呱作响&#xff0c;所以 croakOfFrogs 中会混合多个 “croak” 。 请你返回模拟字符串中所有蛙鸣所需不同青蛙的…

MYSQL性能优化(转)

MySQL 服务器调优 最近帮人维护一个DZ论坛&#xff0c;总结如下几个调优技巧&#xff0c;让 MySQL 服务器飞速运行有 3 种方法可以加快 MySQL 服务器的运行速度&#xff0c;效率从低到高依次为&#xff1a;1.替换有问题的硬件。2.对 MySQL 进程的设置进行调优。3.对查询进行优化…

python报IndentationError: unexpected indent的解决方法.

问题描述&#xff1a; python语言对缩进非常敏感&#xff0c;一般都是四个空格 一个tab&#xff0c;但是很多时候我们会忽视这个问题。导致两者混用或者少写空格容易出现这样的问题。问题解决&#xff1a;找到指定代码行&#xff0c;重新书写&#xff01;下面的with open则是明…

termux配置python安装kali_安卓安装kali linux之Termux

解决安装kali无模组问题步骤1.获取root环境需要下载proot直接在命令行里输入pkg install proot&#xff0c;下完以后输入命令termux-chroot获取root环境2.获取git &#xff0c;因为需要在github上下载atilo&#xff0c;atilo的作用是atilo是github上的一个开源工具&#xff0c;…

LeetCode 466. 统计重复个数(循环节)

1. 题目 由 n 个连接的字符串 s 组成字符串 S&#xff0c;记作 S [s,n]。例如&#xff0c;["abc",3]“abcabcabc”。 如果我们可以从 s2 中删除某些字符使其变为 s1&#xff0c;则称字符串 s1 可以从字符串 s2 获得。例如&#xff0c;根据定义&#xff0c;“abc”…

aspnet_regsql

aspnet_regsql 使SQL支持会话状态 aspnet_regsql -S localhost -U sa -P password -ssadd -sstype p 其中&#xff1a;-sstype有三个值&#xff1a;t,p,c(详细说明可使用 aspnet_regsql -? 命令查看) 使数据库支持SQL Server高速缓存禁用功能 aspnet_regsql -S localhost -U …

AcWing之找出数组中重复的数字

题目 给定一个长度为 n 的整数数组 nums&#xff0c;数组中所有的数字都在 0∼n−1 的范围内。 数组中某些数字是重复的&#xff0c;但不知道有几个数字重复了&#xff0c;也不知道每个数字重复了几次。 请找出数组中任意一个重复的数字。 注意&#xff1a;如果某些数字不在 0…

python绘制数字23_Python 画数码数字8

import turtlesize 10line 40# 拿出笔pen turtle.Pen()pen.pensize(size)pen.pencolor("blue")turtle.tracer(False) # 不跟踪动画pen.penup()pen.forward(size)pen.pendown()pen.forward(line)pen.penup()pen.forward(size)pen.pendown()pen.left(90)pen.penup()…

LeetCode 303. 区域和检索 - 数组不可变(前缀和)

1. 题目 给定一个整数数组 nums&#xff0c;求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和&#xff0c;包含 i, j 两点。 示例&#xff1a; 给定 nums [-2, 0, 3, -5, 2, -1]&#xff0c;求和函数为 sumRange() sumRange(0, 2) -> 1 sumRange(2, 5) -> -1 sumRang…

timer控件的使用

拖拉过去后,双击timer,进入timer2_Tick事件,写入代码后, 改timer属性 interval为1 enabled为true 转载于:https://www.cnblogs.com/zzh1236/archive/2008/12/17/1356435.html

AcWing之找出不改变数组找到重复的数字

题目 给定一个长度为 n1 的数组nums&#xff0c;数组中所有的数均在 1∼n 的范围内&#xff0c;其中 n≥1。请找出数组中任意一个重复的数&#xff0c;但不能修改输入的数组。样例 给定 nums [2, 3, 5, 4, 3, 2, 6, 7]。 返回 2 或 3。思考题&#xff1a; 如果只能使用 O(1) …

DELPHI之备忘(二)

1. DLL的资源释放问题 EXITPROC//*******************//释放资源//*******************var dllExit: Pointer;procedure MyExit;begin//资源释放 ExitProc : dllExit;end;//******************************//创建资源//******************************begin // 资源创建 Exi…