LeetCode 第 23 场双周赛(970/2044,前47.5%)

文章目录

    • 1. 比赛结果
    • 2. 题目
      • 1. LeetCode 5360. 统计最大组的数目 easy
      • 2. LeetCode 5362. 构造 K 个回文字符串 medium
      • 3. LeetCode 5361. 圆和矩形是否有重叠 medium
      • 4. LeetCode 5363. 做菜顺序 hard

1. 比赛结果

做出来了 1、3 两题,继续加油!
第二道字符串的题,又是看错题,以后要多读几遍题目,题目说要使用所有字符,我视而不见,去排列组合。。。
第四题,想到了贪心,又转到动态规划去做,没做出来。

全国排名:970 / 2044,47.5%;全球排名:2946 / 7026,42%
在这里插入图片描述
在这里插入图片描述

2. 题目

1. LeetCode 5360. 统计最大组的数目 easy

题目链接

给你一个整数 n 。请你先求出从 1 到 n 的每个整数 10 进制表示下的数位和(每一位上的数字相加),然后把数位和相等的数字放到同一个组中。

请你统计每个组中的数字数目,并返回数字数目并列最多的组有多少个。

示例 1:
输入:n = 13
输出:4
解释:总共有 9 个组,将 113 按数位求和后这些组分别是:
[1,10][2,11][3,12][4,13][5][6][7][8][9]。
总共有 4 个组拥有的数字并列最多。示例 2:
输入:n = 2
输出:2
解释:总共有 2 个大小为 1 的组 [1][2]。示例 3:
输入:n = 15
输出:6示例 4:
输入:n = 24
输出:5提示:
1 <= n <= 10^4

解答:

class Solution {
public:int countLargestGroup(int n) {unordered_map<int,int> m;int sum;for(int i = 1; i <= n; ++i){sum = cal(i);m[sum]++;}int maxlen = 0, count = 0;for(auto mi : m){if(mi.second > maxlen)//和一样的,个数最多的{maxlen = mi.second;count = 1;}else if(mi.second == maxlen)count++;}return count;}int cal(int i){	//计算各数位的和int sum = 0;while(i){sum += i%10;i /= 10;}return sum;}
};

8 ms 6.4 MB

2. LeetCode 5362. 构造 K 个回文字符串 medium

题目链接

给你一个字符串 s 和一个整数 k 。请你用 s 字符串中 所有字符 构造 k 个非空 回文串 。

如果你可以用 s 中所有字符构造 k 个回文字符串,那么请你返回 True ,否则返回 False 。

示例 1:
输入:s = "annabelle", k = 2
输出:true
解释:可以用 s 中所有字符构造 2 个回文字符串。
一些可行的构造方案包括:"anna" + "elble""anbna" + "elle""anellena" + "b"示例 2:
输入:s = "leetcode", k = 3
输出:false
解释:无法用 s 中所有字符构造 3 个回文串。示例 3:
输入:s = "true", k = 4
输出:true
解释:唯一可行的方案是让 s 中每个字符单独构成一个字符串。示例 4:
输入:s = "yzyzyzyzyzyzyzy", k = 2
输出:true
解释:你只需要将所有的 z 放在一个字符串中,所有的 y 放在另一个字符串中。
那么两个字符串都是回文串。示例 5:
输入:s = "cr", k = 7
输出:false
解释:我们没有足够的字符去构造 7 个回文串。提示:
1 <= s.length <= 10^5
s 中所有字符都是小写英文字母。
1 <= k <= 10^5

解题:

  • 奇数个字符出现的次数不能大于 k ,因为它只能放在中间
  • 然后字符串长度必须 >= k
class Solution {
public:bool canConstruct(string s, int k) {if(s.size() < k)return false;int count[26] = {0};for(int i = 0; i < s.size(); ++i)count[s[i]-'a']++;int odd = 0;for(int i = 0; i < 26; ++i){if(count[i]%2 == 1)odd++;}       return odd <= k;}
};

60 ms 11.8 MB

3. LeetCode 5361. 圆和矩形是否有重叠 medium

题目链接

给你一个以 (radius, x_center, y_center) 表示的圆和一个与坐标轴平行的矩形 (x1, y1, x2, y2)
其中 (x1, y1) 是矩形左下角的坐标,(x2, y2) 是右上角的坐标。

如果圆和矩形有重叠的部分,请你返回 True ,否则返回 False 。

换句话说,请你检测是否 存在 点 (xi, yi) ,它既在圆上也在矩形上(两者都包括点落在边界上的情况)。

在这里插入图片描述


解题:
在这里插入图片描述

  • 检查圆心是否在绿色或者蓝色的矩形内(原矩形为红色,偏移距离为 半径)
  • 或者圆心与四个顶点的任意一个的距离小于等于半径
class Solution {
public:bool checkOverlap(int r, int xc, int yc, int x1, int y1, int x2, int y2) {if(dis(xc,yc,x1,y1)<=r*r||dis(xc,yc,x1,y2)<=r*r||dis(xc,yc,x2,y1)<=r*r||dis(xc,yc,x2,y2)<=r*r)return true;if(x1<=xc && xc <= x2 &&  y1-r <= yc && yc <= y2+r)return true;if(x1-r<=xc && xc <= x2+r &&  y1 <= yc && yc <= y2)return true;return false;}double dis(int xc, int yc, int x, int y){return pow((xc-x),2)+pow((yc-y),2);}
};

0 ms 6 MB

更优美的解:Ikaruga大佬

bool checkOverlap(int radius, int x_center, int y_center, int x1, int y1, int x2, int y2) {double x0 = (x1 + x2) / 2.0;double y0 = (y1 + y2) / 2.0;vector<double> p = { abs(x_center - x0) , abs(y_center - y0) };//圆心与矩形中心的坐标差vector<double> q = { x2 - x0, y2 - y0 };//矩形中心与一个顶点的坐标差double a1 = max(p[0] - q[0], 0.0);//在上述两个矩形内的话,一个分量为0double a2 = max(p[1] - q[1], 0.0);//在四个圆角处,两个量都不为0return sqrt(a1 * a1 + a2 * a2) <= radius;   }

4. LeetCode 5363. 做菜顺序 hard

题目链接

一个厨师收集了他 n 道菜的满意程度 satisfaction ,这个厨师做出每道菜的时间都是 1 单位时间。

一道菜的 「喜爱时间」系数定义为烹饪这道菜以及之前每道菜所花费的时间乘以这道菜的满意程度,也就是 time[i]*satisfaction[i]

请你返回做完所有菜 「喜爱时间」总和的最大值为多少。

你可以按 任意 顺序安排做菜的顺序,你也可以选择放弃做某些菜来获得更大的总和。

示例 1:
输入:satisfaction = [-1,-8,0,5,-9]
输出:14
解释:去掉第二道和最后一道菜,最大的喜爱时间系数和为 (-1*1 + 0*2 + 5*3 = 14) 。
每道菜都需要花费 1 单位时间完成。示例 2:
输入:satisfaction = [4,3,2]
输出:20
解释:按照原来顺序相反的时间做菜 (2*1 + 3*2 + 4*3 = 20)示例 3:
输入:satisfaction = [-1,-4,-5]
输出:0
解释:大家都不喜欢这些菜,所以不做任何菜可以获得最大的喜爱时间系数。示例 4:
输入:satisfaction = [-2,5,-1,0,3,-3]
输出:35提示:
n == satisfaction.length
1 <= n <= 500
-10^3 <= satisfaction[i] <= 10^3

解题:

  • 参考 ikaruga大佬的解
  • 贪心,先降序排列,满意度最高的,系数越大越好
class Solution {
public:int maxSatisfaction(vector<int>& satisfaction) {sort(satisfaction.rbegin(), satisfaction.rend());int sum = 0, ans = 0;for(int i = 0; i < satisfaction.size(); ++i){sum += satisfaction[i];//满意度大的加上if(sum <= 0)break;ans += sum;//循环一次,最大的多加1次,相当于系数+1}return ans;}
};

4 ms 6.8 MB

  • 参考 迷糊的康康DP解
class Solution {
public:int maxSatisfaction(vector<int>& satisfaction) {sort(satisfaction.begin(), satisfaction.end());//需要先排序int i, j, n = satisfaction.size();vector<vector<int>> dp(n+1, vector<int>(n+1,0));//dp[i][j] 表示前i道菜,做j道的最大满意度dp[1][0] = 0, dp[1][1] = satisfaction[0];for(i = 2; i <= n; ++i){for(j = 1; j <= i; ++j){if(j == i)dp[i][j] = dp[i-1][j-1]+j*satisfaction[i-1];//每道菜都做了elsedp[i][j] = max(dp[i-1][j], dp[i-1][j-1]+j*satisfaction[i-1]);//第i道菜不做,dp[i-1][j],第i道菜做 dp[i-1][j-1]+j*satisfaction[i-1]}}int ans = INT_MIN;for(i = 0; i <= n; ++i)ans = max(ans, dp[n][i]);//n道菜,做i道的最大值return ans;}
};

44 ms 19.4 MB

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

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

相关文章

杀疯了…4个月发表论文的实操手册来了!

科研的本质&#xff1a;解决问题&#xff0c;创造新事物(新问题、新方法、新发现、新理论)科研论文的关键的体现在于将所得结果详实记录并进行科学分析后&#xff0c;总结成果写成论文由同行评议认可后发表。科研的完整过程那么如何在4-6个月内产出论文呢&#xff0c;这次我和一…

tkinter的可视化拖拽工具_可视化越做越丑?这五个高级图表效果实现流程分享给你...

今天我们来说一说数据可视化&#xff0c;想必很多人在入门数据分析之后&#xff0c;就会经常进行可视化的工作&#xff0c;所谓一图胜千言&#xff0c;图表用的好&#xff0c;真的是会事半功倍的。但现实情况下&#xff0c;很多人遇到的问题是&#xff1a;你做的图表太丑了&…

WinForm的App.config

项目右键&#xff0d;&#xff0d;添加&#xff0d;&#xff0d;添加新项&#xff0d;&#xff0d;选择应用程序配置文件 即出现App.config.打开App.config, 键入&#xff1a; <appSettings></appSettings>然后在 appSettings中就可以定义变量及变量的数值了。比…

LeetCode 1403. 非递增顺序的最小子序列(排序)

1. 题目 给你一个数组 nums&#xff0c;请你从中抽取一个子序列&#xff0c;满足该子序列的元素之和 严格 大于未包含在该子序列中的各元素之和。 如果存在多个解决方案&#xff0c;只需返回 长度最小 的子序列。如果仍然有多个解决方案&#xff0c;则返回 元素之和最大 的子…

独自一人,怒发AI顶会论文

长短作为曾经熬通宵肝论文的过来人&#xff0c;小编要吐槽&#xff0c;论文写久了真的会头秃&#xff0c;尤其是确定选题和找创新点、idea的时候&#xff0c;是薅头发事件的高发阶段。对于那些导师放养、在自己的摸索中磕磕绊绊前行的科研新手们&#xff0c;焦虑总是瞅准时机就…

winform响应时间最长是多少分钟_当詹姆斯退役时,他的总出场时间会达到多少分钟?...

在勒布朗-詹姆斯进入他职业生涯的第17个年头之际&#xff0c;Bleacher Report将目光锁定在了这位四届MVP的身上&#xff0c;在度过即将到来的2019-20赛季以及剩余的名人堂职业生涯之后&#xff0c;他的多项数据在联盟历史中会处于怎样的地位呢&#xff1f;詹姆斯已在历史排行榜…

[转载]WebBrowser知识

WebBrowser知识WebBrowser知识Q: What is WebBrowser?A: The WebBrowser is Microsofts Internet Explorer in the form of an ActiveX control. It can be imported into the Delphi IDE and dropped on a form like any other component. Therefore, you can harness the po…

LeetCode 1404. 将二进制表示减到 1 的步骤数(字符串加法)

1. 题目 给你一个以二进制形式表示的数字 s 。请你返回按下述规则将其减少到 1 所需要的步骤数&#xff1a; 如果当前数字为偶数&#xff0c;则将其除以 2 。如果当前数字为奇数&#xff0c;则将其加上 1 。 题目保证你总是可以按上述规则将测试用例变为 1 。 示例 1&#…

可以炸掉用户脑袋的VR设备来了!元宇宙与现实连接了?

编 | Aeneas 昕朋源 | 新智元游戏失败就杀死你的头显&#xff0c;就问你敢不敢戴&#xff1f;对于很多游戏设计者来说&#xff0c;游戏里的死亡根本不够刺激。在他们看来&#xff0c;要玩就玩真的——在游戏里死了&#xff0c;你就是真死了。Oculus VR创始人帕尔默洛基&#xf…

spark调用python_在MRS集群中使用Python3.7运行PySpark程序,调用RDD的take函数报错处理...

现象 如果我们安装了python3.7版本来运行spark&#xff0c;并且用到了RDD的take函数&#xff0c;就会报错&#xff1a;RuntimeError: generator raised StopIteration 我们可以编写一个python脚本test.py来进行测试&#xff0c;用spark-submit命令提交&#xff1a; spark-submi…

对称加密(DES)

usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Security.Cryptography;usingSystem.IO;namespaceComponent{ public class Security { public Security() { } //默认密钥向量 private static …

AI终于能替我写论文了

编 | 小舟、陈萍源 | 机器之心Meta AI 提出了一个可以总结学术文献&#xff0c;解决数学问题的新模型&#xff0c;该模型还能生成百科文章&#xff0c;编写科学代码&#xff0c;注释分子和蛋白质等等。近年来&#xff0c;随着各学科领域研究的进步&#xff0c;科学文献和数据呈…

网站访问量怎么刷_基于爬虫刷新某网站访问量!我说怎么上千万呢

前言&#xff1a;前一段时间看到有博友写了爬虫去刷新博客访问量一篇文章&#xff0c;当时还觉得蛮有意思的&#xff0c;就保存了一下&#xff0c;但是当我昨天准备复现的时候居然发现文章404了。所以本篇文章仅供学习交流&#xff0c;严禁用于商业用途当我在写文章的同时&…

入市

最近很忙&#xff0c;不是工作&#xff0c;是因为入市。 前天买入第一支股票开始&#xff0c;整个脑袋就开始忙碌起来。什么也顾不得了&#xff0c;时不时偷偷瞄几眼&#xff0c;跌了&#xff0c;就盯着股票曲线图&#xff0c;似乎自己多盯一会儿&#xff0c;那个曲线就会涨…

LeetCode 1405. 最长快乐字符串(贪心)

1. 题目 如果字符串中不含有任何 aaa&#xff0c;bbb 或 ccc 这样的字符串作为子串&#xff0c;那么该字符串就是一个「快乐字符串」。 给你三个整数 a&#xff0c;b &#xff0c;c&#xff0c;请你返回 任意一个 满足下列全部条件的字符串 s&#xff1a; s 是一个尽可能长的…

我裂开了...人类脑海中的画面,被AI解码了??

作者 | 白鹡鸰导言有没有那么几个瞬间&#xff0c;你要么想把自己脑子里的东西掏出来给别人看&#xff0c;要么想撬开别人的脑子看看里面都装了什么&#xff1f;虽然错过了霍格沃茨的入学时间&#xff0c;但如果从现在开始学习扩散模型和神经学&#xff0c;可能很快你就能实现这…

我的老师

他的人品,学识是对我的一生都有很大的影响&#xff0c;下面的内容都是事实&#xff0c;因为我是他的学生(1992-1995)&#xff0c;一生中我都是他的学生 From: http://211.67.168.43/infoshow.aspx?id118 我是这样做教师的——师德标兵李九成老师先进事迹报告大家好&#xff01…

python构建二叉树_python--使用递归的方式建立二叉树

树和图的数据结构&#xff0c;就很有意思啦。# coding utf-8 class BinaryTree: def __init__(self, root_obj): self.key root_obj self.left_child None self.right_child None def insert_left(self, new_node): node BinaryTree(new_node) if self.left_child is None…

GPT-4要来了?传言:先进到与人类无异

编 | Cris源 | 新智元千呼万唤始出来&#xff01;GPT-4&#xff0c;真要来了&#xff1f;作为史上最受期待的AI模型&#xff0c;GPT-4真要来了&#xff1f;这几天&#xff0c;AI分析师罗梅罗的一篇专栏文章&#xff0c;一经推出便迅速「引爆」了整个AI科技圈。他表示&#xff0…

LeetCode 1406. 石子游戏 III(DP)

1. 题目 Alice 和 Bob 用几堆石子在做游戏。几堆石子排成一行&#xff0c;每堆石子都对应一个得分&#xff0c;由数组 stoneValue 给出。 Alice 和 Bob 轮流取石子&#xff0c;Alice 总是先开始。在每个玩家的回合中&#xff0c;该玩家可以拿走剩下石子中的的前 1、2 或 3 堆…