【每日一题】【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://xiahunao.cn/news/2659209.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

SSL证书到期怎么办?续签教程一览

在网络安全中&#xff0c;SSL证书是确保数据传输安全的关键。然而&#xff0c;一旦SSL证书到期&#xff0c;就会导致网站的安全性受到威胁。为了保持网站的正常运行并维护用户信任&#xff0c;及时续签SSL证书是至关重要的。以下是一个简要的SSL证书到期后如何进行续签的教程&a…

浏览器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…

vs c++mysql 配置

C/C访问MySQL数据库_c链接数据库陈子青-CSDN博客文章浏览阅读2.7k次&#xff0c;点赞14次&#xff0c;收藏65次。C/C访问MySQL数据库VS2019配置第一步&#xff1a;打开mysql的安装目录&#xff0c;默认安装目录如下&#xff1a;C:\Program Files\MySQL\MySQL Server 8.0&#x…

Flink项目实战篇 基于Flink的城市交通监控平台(下)

系列文章目录 Flink项目实战篇 基于Flink的城市交通监控平台&#xff08;上&#xff09; Flink项目实战篇 基于Flink的城市交通监控平台&#xff08;下&#xff09; 文章目录 系列文章目录4. 智能实时报警4.1 实时套牌分析4.2 实时危险驾驶分析4.3 出警分析4.4 违法车辆轨迹跟…

搜维尔科技:经脉腧穴虚拟针灸VR虚拟教学平台AcuMap软件案例分享

北京中医药大学经脉腧穴VR虚拟教学平台案例 主要产品 HTCvive &#xff0c;AcuMap&#xff1b; 实施内容 一、项目说明 &#xff08;1&#xff09;穴位取穴与体表解剖标志关系&#xff1b;&#xff08;2&#xff09;穴下层次解剖及周围解剖结构展示&#xff1b; &#xf…

Tuxera NTFS for Mac2024免费Mac读写软件下载教程

在日常生活中&#xff0c;我们使用Mac时经常会遇到外部设备不能正常使用的情况&#xff0c;如&#xff1a;U盘、硬盘、软盘等等一系列存储设备&#xff0c;而这些设备的格式大多为NTFS&#xff0c;Mac系统对NTFS格式分区存在一定的兼容性问题&#xff0c;不能正常读写。 那么什…

第十章:构建安全的SSH 服务体系

A_实验案例:构建安全的SSH 服务体系 实验环境 某公司的电子商务站点由专门的网站管理员进行配置和维护&#xff0e;并需要随时从Internet进行远程管理。考虑到易用性和灵活性&#xff0c;在 Web服务器上启用OpenSSH 服务&#xff0c;同时基于安全性考虑&#xff0c;需要对SSH…

Java中XML的解析

1.采用第三方开元工具dom4j完成 使用步骤 1.导包dom4j的jar包 2.add as lib.... 3.创建核心对象, 读取xml得到Document对象 SAXReader sr new SAXReader(); Document doc sr.read(String path); 4.根据Document获取根元素对象 Element root doc.getRootElement(); …

SpringBoot2.7 组件注册、属性绑定

SpringBoot2.7 组件注册 一.组件注册1.Configuration解释案例测试 2.SpringBootConfiguration解释 3. Bean解释 4. Scope解释案例 5.Component解释 6.Import解释作用 7.Controller、Service、Repository、Component解释 二.属性绑定1.ConfigurationProperties作用区别常用情况案…

Cucumber-JVM的示例和运行解析

Cucumber-JVM 是一个支持 Behavior-Driven Development (BDD) 的 Java 框架。在 BDD 中&#xff0c;可以编写可读的描述来表达软件功能的行为&#xff0c;而这些描述也可以作为自动化测试。 Cucumber-JVM 的最小化环境 Cucumber-JVM是BDD的框架&#xff0c; 提供了GWT语法的相…

项目接口性能优化方案

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;CSDN实力新星&#xff0c;后端开发两年经验&#xff0c;曾担任甲方技术代表。会点点Java相关技术栈、帆软报表、低代码平台快速开发。技术尚浅&#xff0c;闭关学习中 &#x1f60…

Qt 中使用 MySQL 数据库保姆级教程(下)

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 上篇中我们安装好了 MySQL 数据库和 Navicat 软件&#xff0c;下面在 Qt 中尝试使用数据库 1. 在 Qt 中连接 MySQL 数据库&#…

MariaDB单机多实例的配置方法

1、什么是数据库的单机多实例 数据库的单机多实例是指在一台物理服务器上运行多个数据库实例。这种部署方式允许多个数据库实例共享相同的物理资源&#xff0c;如CPU、内存和存储&#xff0c;从而提高硬件利用率并降低成本。每个数据库实例可以独立运行&#xff0c;处理不同的…

lottie 动画在 vue 中的使用

前言 最近我所负责的项目中采用了动画效果&#xff0c;最早使用 gif 来实现。然而&#xff0c;在实践过程中&#xff0c;我发现 gif 格式的动画在 git 中出现了明显的锯齿感&#xff0c;这让我非常困扰。为了追求更完美的表现效果&#xff0c;我最终选择了 lottie 来实现我的动…

看完谁再说搞不定上下角标?

一、需求 开发中有一些需要用到上下角标的地方&#xff0c;比如说化学式、数学式、注释。。。除了可以使用上下角标的标签&#xff0c;还可以通过css样式和CV大法实现&#xff0c;以下是具体实现方式。 二、实现方法 &#xff08;1&#xff09;标签写法&#xff1a; <sup…

go 使用 - sync.Metux

[TOC]&#xff08;sync.metux 使用&#xff09; 简介 简述使用metux使用的方法&#xff0c; 使用的注意点&#xff0c; 以及使用情况使用方法 提供的方法 Lock() 方法用于获取锁 Unlock() 方法用于释放锁 TryLock()方法尝试获取锁 对共享资源进行加锁&#xff0c; 例 &#…

Next Station of Flink CDC

摘要&#xff1a;本文整理自阿里云智能 Flink SQL、Flink CDC 负责人伍翀&#xff08;花名&#xff1a;云邪&#xff09;&#xff0c;在 Flink Forward Asia 2023 主会场的分享。Flink CDC 是一款基于 Flink 打造一系列数据库的连接器。本次分享主要介绍 Flink CDC 开源社区在过…

C语言KR圣经笔记 5.1指针和地址 5.2指针和函数参数

第五章 指针和数组 指针是包含变量地址的变量。在 C 语言中&#xff0c;指针被大量使用&#xff0c;部分原因是有时只能用指针来表达某种计算&#xff0c;而部分原因是相比其他方式&#xff0c;指针通常能带来更紧凑和高效的代码。指针和数组是紧密关联的&#xff1b;本章也讲…

postman进阶使用

前言 对于postman的基础其实很容易上手实现&#xff0c;也有很多教程。 对于小编我来说&#xff0c;也基本可以实现开发任务。 但是今年我们的高级测试&#xff0c;搞了一下postman&#xff0c;省去很多工作&#xff0c;让我感觉很有必要学一下 这篇文章是在 高级测试工程师ht…

mathtype公式在word文档里面有点上移,word公式向上偏移

标题&#xff1a;mathtype公式在word文档里面有点上移&#xff0c;word公式向上偏移 对于每一段文字&#xff0c;选中后&#xff0c;点击段落&#xff0c; 然后调整为 居中即可 调整后效果图