【每日一题】【12.24】 - 【12.28】

🔥博客主页: A_SHOWY
🎥系列专栏:力扣刷题总结录 数据结构  云计算  数字图像处理  力扣每日一题_

本周总结:本周的每日一题比较针对于数学问题的一个应用,如二元一次方程组的求解或者数组求和,同时long long 的统一问题防止出界在这周题目中经常出现。还有当Sn随着n单调时降低时间复杂度要考虑二分法,当有限次数出现循环的时候考虑枚举方法。

 【12.24】1954. 收集足够苹果的最小花园周长

1954. 收集足够苹果的最小花园周长icon-default.png?t=N7T8https://leetcode.cn/problems/minimum-garden-perimeter-to-collect-enough-apples/

虽然是一道mid题目,但是其实又是一个数学题目,可以利用枚举,看什么时候总数值比这个needapples大,返回周长就可以。 

方法一:枚举 

上图是我自己的求这个当右上角设置为(n,n)时,苹果总数的方法,因为这个x轴和y轴坐标是对称的,所以可以求一个*2就可以,先求和公式算半边和乘2,然后注意一共有(2n+1)个边长。 

class Solution {
public:long long minimumPerimeter(long long neededApples) {long long n = 1;for(; 2 * n*(n + 1) * (2 * n + 1) < neededApples; ++n);return n * 8;//返回周长}
};

方法二:二分法

 由于Sn跟着n是单调递增的,所以联系方法1,可以使用二分法降低时间复杂度(logm).right值可以使用最大值开三次方根,也可以直接设置一个很大的数即可。常用的二分法模板要熟练,值得注意的是long long出界问题。

class Solution {
public:long long minimumPerimeter(long long neededApples) {long long int left = 0, right = 1000000, ans = 0;while(left <= right){long long  mid = left + ((right - left) / 2);if(mid * (mid + 1) * 2 *(2 * mid + 1) >= neededApples){ans = mid;right = mid -1;}else {left = mid + 1; }} return ans * 8;}
};

 【12.25】 1276.不浪费原料的汉堡制作方案 

1276. 不浪费原料的汉堡制作方案icon-default.png?t=N7T8https://leetcode.cn/problems/number-of-burgers-with-no-waste-of-ingredients/

是一道mid题,但是思路比较简单是个数学的求解二元一次方程组的数学问题,注意自变量范围即可

1. 设巨无霸汉堡有 x 个,皇堡有 y 个,由于所有的材料都需要用完,因此我们可以得到

二元一次方程组:
4x + 2y = tomatoSlices
x + y = cheeseSlices

 2.可以求解得到

 x= 1/2 * tomatoSlices − cheeseSlicesy=2 * cheeseSlices− 1/2 * tomatoSlices

3.根据题意,x>=0 y>=0因此需要满足

tomatoSlices = 2k,k∈N
tomatoSlices ≥ 2 * cheeseSlices
4 * cheeseSlices ≥ tomatoSlices
​

就是不满足题意返回空,满足题意返回方程求解的值所以直接写:

class Solution {
public:vector<int> numOfBurgers(int tomatoSlices, int cheeseSlices) {if(tomatoSlices %2 != 0 || tomatoSlices < 2 * cheeseSlices || tomatoSlices > 4 * cheeseSlices) return{};return{tomatoSlices /2 - cheeseSlices,2 * cheeseSlices - tomatoSlices/2};}
};

【12.27】 2660.保龄球游戏的获胜者

2660. 保龄球游戏的获胜者icon-default.png?t=N7T8https://leetcode.cn/problems/determine-the-winner-of-a-bowling-game/

比较简单的模拟题目,注意审题,是前两轮都要判断是否是10,同时要注意越界的问题 

class Solution {
public:int isWinner(vector<int>& player1, vector<int>& player2) {int sum1 = 0;int sum2 = 0;for(int i = 0; i < player1.size();i++){if((i >= 1 && player1[i-1] == 10)||(i >= 2 &&player1[i-2] ==10)) sum1 += player1[i] *2;else sum1  += player1[i];}for(int j = 0; j < player2.size();j++){if((j >= 1 && player2[j-1] == 10)||(j >= 2 &&player2[j-2] ==10)) sum2 += player2[j] *2;else sum2  += player2[j];}if(sum1 > sum2) return 1;else if(sum1 == sum2) return 0;else return 2;}
};

【12.28】 2735.收集巧克力

2735. 收集巧克力icon-default.png?t=N7T8https://leetcode.cn/problems/collecting-chocolates/

今天的题目是稍微有一些难度的题目,可以说是一个动态规划有关的枚举题目,思路比较难想,同时还要注意越界的问题。整体思路不那么想好,而且难度比较大。

1.大概意思就是有个价格盘nums,初始情况下[0,n−1]]类的巧克力价格对应着nums[0]到nums[n−1],可以把巧克力看成是排在了一个传送带上,旋转一次传送带的代价是x,巧克力iii将以旋转后对齐的nums值回收掉,问回收所有巧克力的最小代价。

2.很显然,最多旋转n−1次传送带,因为旋转nnn次相当于什么都没干,再增大旋转次数也是在重复这个模式,因此我们枚举旋转次数即可。预处理出cost数组,其中cost[i][j]表示巧克力iii在旋转j次时被回收的代价。

3.我们就可以枚举操作次数了,它的范围为 [0,n−1]。当操作次数为 k 时,初始类型为 i 的巧克力需要的成本就是最小值,我们就可以使用一个二维数组 f(i,k) 记录该值,它有如下的递推式:

f(i,0) = nums[i]
f(i,k) = min{f(i,k−1),nums[(i+k) mod n]}
​

即 f(i,k)相较于 f(i,k−1),多了一个 nums[(i+k) mod n 的选择

class Solution {
public:long long minCost(vector<int>& nums, int x) {int n = nums.size();vector<int>  f(nums);long long  ans = accumulate(f.begin(),f.end(),0LL);for(int k = 1; k < n; ++k){//k表示的是旋转多少次for(int i = 0; i< n; ++i){//i表示的是每一个巧克力f[i] = min(f[i],nums[(i+k) % n]);}ans = min(ans,  k *static_cast<long long> (x) + accumulate(f.begin(),f.end(),0LL));}
return ans;}
};

4.同时要注意越界问题,一直是long long,在最后算ans的时候,k或者x要通过static_cast转换成long long形式。accumulate用于计算数组或者容器类的元素总和。

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

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

相关文章

IDEA、VSCode等快速连接Github(Mac版)

问题描述 在本地书写✍️完代码后, 想要git push到Github上面, 出现延迟错误; 导致经常push不上去, 如下图所示; 解决方案 进入电脑终端; 输入下列命令; sudo vim /etc/hosts输入密码; 按下 I 键, 进行编辑操作; 将下列语句复制到空白区, 然后按下esc按键, 然后输入:wq即可…

矿泉水硝酸盐和溴酸盐超标解决工艺

在当今社会&#xff0c;人们对健康和优质生活的追求不断提升&#xff0c;使得瓶装饮用水的安全问题受到了广泛关注。溴酸盐和硝酸盐作为自然水体中常见的物质&#xff0c;若在矿泉水中含量过高&#xff0c;可能会对消费者的健康构成潜在威胁。因此&#xff0c;探究有效去除矿泉…

AR-HUD厂商发力下一代技术方案,vHOE为何赢得高度关注?

作为智能座舱的核心显示交互系统&#xff0c;AR-HUD正处于处于量产爆发前期&#xff0c;同时关于下一代技术方案的比拼也在全面升级。 根据《高工智能汽车研究院》数据显示&#xff0c;2023年1-9月&#xff0c;中国市场&#xff08;不含进出口&#xff09;乘用车前装标配W/AR …

双向链表基本操作及顺序和链表总结

目录 基本函数实现 链表声明 总的函数实现声明 创建一个节点 初始化链表 打印 尾插 尾删 头插 头删 查找 pos前插入 删除pos位置 销毁链表 顺序表和链表总结 基本函数实现 链表声明 typedef int DLTDataType;typedef struct DListNode {struct DListNode* nex…

POLL机制

文章目录 一、POLL机制1、应用场景2、执行流程 二、程序1、驱动程序2、测试应用程序 三、总结 一、POLL机制 1、应用场景 使用休眠-唤醒的方式等待某个事件发生时&#xff0c;有一个缺点&#xff1a;等待的时间可能很久。我们可以加上一个超时时间&#xff0c;这时就可以使用…

百度CTO王海峰:文心一言用户规模破1亿

▶ 写在前面▶ 飞桨开发者已达1070万▶ 文心一言用户规模破亿&#xff0c;日提问量快速增长 ▶ 写在前面 “文心一言用户规模突破 1 亿。”12 月 28日&#xff0c;百度首席技术官、深度学习技术及应用国家工程研究中心主任王海峰在第十届 WAVE SUMMIT 深度学习开发者大会上宣布…

Python初学者必须吃透的69个内置函数!

所谓内置函数&#xff0c;就是Python提供的, 可以直接拿来直接用的函数&#xff0c;比如大家熟悉的print&#xff0c;range、input等&#xff0c;也有不是很熟&#xff0c;但是很重要的&#xff0c;如enumerate、zip、join等&#xff0c;Python内置的这些函数非常精巧且强大的&…

外贸网站建站怎么做?海洋建站有哪些步骤?

外贸网站建站需要哪些资料&#xff1f;如何选择外贸建站系统&#xff1f; 外贸企业越来越重视在线业务&#xff0c;而拥有一个专业、高效的外贸网站已经成为成功开展国际贸易的关键一步。海洋建站将为您详细介绍如何进行外贸网站建站&#xff0c;让您的企业在全球市场中脱颖而…

C++ Qt开发:QItemDelegate自定义代理组件

老规矩&#xff0c;首先推荐好书&#xff1a; Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍…

浏览器Post请求出现413 Request Entity Too Large (Nginx)

环境 操作系统 window server 2016 前端项目 Vue2 Nginx-1.25.3 一、错误信息 前端是vue项目&#xff0c;打包后部署在Nginx上&#xff0c;前端post请求出现Request Entity Too Large错误信息。 ​这种问题一般是请求实体太大&#xff08;包含参数&#xff0c;文件等&#xf…

C语言-第十七周课堂总结-数组

找出矩阵中最大值所在的位置 程序解析-求矩阵的最大值 源程序段 二维数组 多维数组的空间想象 一维数组&#xff1a;一列长表或一个向量二维数组&#xff1a;一个表格或一个平面矩阵三维数组&#xff1a;三位空间的一个方阵多维数组&#xff1a;多维空间的一个数据矩阵 …

2019年全国学校POI数据

2019年全国学校POI数据 POI&#xff08;一般作为Point of Interest的缩写&#xff0c;也有Point of Information的说法&#xff09;&#xff0c;通常称作兴趣点&#xff0c;泛指互联网电子地图中的点类数据&#xff0c;基本包含名称、地址、坐标、类别四个属性&#xff1b;在GI…

如何利用树莓派与Nginx结合cpolar内网穿透工具实现公网访问内网web网站

文章目录 1. Nginx安装2. 安装cpolar3.配置域名访问Nginx4. 固定域名访问5. 配置静态站点 安装 Nginx&#xff08;发音为“engine-x”&#xff09;可以将您的树莓派变成一个强大的 Web 服务器&#xff0c;可以用于托管网站或 Web 应用程序。相比其他 Web 服务器&#xff0c;Ngi…

QML —— ProgressBar示例(附完整源码)

示例 - 效果 实例 - 源码 import QtQuick 2.12 import QtQuick.Window 2.12import QtQuick.Layouts 1.12 import QtQuick.Controls 2.5Window {id: rootIdvisible: truewidth: 640height: 480title: qsTr("Hello World")Column{spacing: 40anchors.centerIn: parent…

车路协同中 CUDA 鱼眼相机矫正、检测、追踪

在车路协同中,鱼眼一般用来补充杆件下方的盲区,需要实现目标检测、追踪、定位。在目标追踪任务中,通常的球机或者枪机方案,无法避免人群遮挡的问题,从而导致较高的ID Swich,造成追踪不稳定。但是鱼眼相机的顶视角安装方式,天然缓解了遮挡的问题,从而实现杆件下方的盲区…

携手共进 探索生命|清华大学创融同学会走进生命系 共话细胞科技新未来

携手共进 探索生命&#xff5c;清华大学创融同学会走进生命系 共话细胞科技新未来 探索细胞产业新高度&#xff0c;赋予生命健康更多保障&#xff01;日前&#xff0c;清华大学创融同学会一行莅临全生命周期健康管理中心——生命系参观交流。生命系领导以及全体员工对来访贵宾…

【10】ES6:Promise 对象

一、同步和异步 1、JS 是单线程语言 JavaScript 是一门单线程的语言&#xff0c;因此同一个时间只能做一件事情&#xff0c;这意味着所有任务都需要排队&#xff0c;前一个任务执行完&#xff0c;才会执行下一个任务。但是&#xff0c;如果前一个任务的执行时间很长&#xff…

Python3 基本数据类型

Python 中的变量不需要声明。每个变量在使用前都必须赋值&#xff0c;变量赋值以后该变量才会被创建。 在 Python 中&#xff0c;变量就是变量&#xff0c;它没有类型&#xff0c;我们所说的"类型"是变量所指的内存中对象的类型。 等号&#xff08;&#xff09;用来…

关于时间与空间复杂度的学习

关于时间与空间复杂度的学习 算法时间复杂度定义标准算法度量单位渐近记号1、Θ&#xff08;big-theta&#xff09;2、O&#xff08;big-oh&#xff09;3、Ω&#xff08;big-omege&#xff09; 推导时间复杂度步骤与法则步骤法则 示例1.常数阶2、线性阶3、对数阶4、平方阶5、立…

『精』CSS 小技巧之BEM规范

『精』CSS 小技巧之BEM规范 文章目录 『精』CSS 小技巧之BEM规范一、什么是BEM&#xff1f;二、BEM要怎么用&#xff1f;三、不用BEM会少个胳膊吗&#xff1f;&#x1f48a;四、Sass与BEM的结合&#x1f388;五、块与修饰符应放在一块&#x1f47f;参考资料&#x1f498;推荐博…