11.哀家要长脑子了!

目录

1.453. 最小操作次数使数组元素相等 - 力扣(LeetCode)

2.665. 非递减数列 - 力扣(LeetCode) 

3. 283. 移动零 - 力扣(LeetCode)

4. 3114. 替换字符可以得到的最晚时间 - 力扣(LeetCode)

5. 3115. 素数的最大距离 - 力扣(LeetCode)


1. 453. 最小操作次数使数组元素相等 - 力扣(LeetCode)

 

小姐姐 你这道题做过你还不知道做啊啊啊啊

首先可以这么想,这道题的本质就是让数组的高度差为0

每次操作将会使 n-1 个元素增加 1,换句话来说,每次操作可以让 1 个元素减 1;

那么我们就使得所有元素都变成最小值就可以使元素相等了

class Solution {
public:int minMoves(vector<int>& nums) {int res = 0;int min = *min_element(nums.begin(), nums.end());for(int i = 0; i < nums.size(); i++){res += nums[i] - min;// 每次都是只能减1 顺便就当计数器了}return res;}
};
2.665. 非递减数列 - 力扣(LeetCode) 

私密马赛,瓦达西菜菜酱没一点思路。。

非递减序列有a,b,c三种形式

需要改变的形式可能会有三种;

对于第①种和第②种我们可以选择对第 i-1 个元素操作或者是第 i 个元素:

把第i个元素变成跟第 i-1 个元素一样大或者把第 i-1 个元素变成跟第 i 个元素一样大。

但是我们选择对第 i-1 个元素操作,因为我们还没有遍历到后面,如果把第 i 个元素改变改成比后面大怎么办

对于第③种情况我们显而易见只能对第i个元素操作

class Solution {
public:bool checkPossibility(vector<int>& nums) {int flag = 0;for(int i = 1; i < nums.size(); i++){if(nums[i] < nums[i-1]){if(i == 1 || nums[i] >= nums[i-2]){nums[i-1] = nums[i];}else{nums[i] = nums[i-1];}flag++;}}// 最后成为非递减序列看操作次数if(flag <= 1)return true;return false;}
};
3. 283. 移动零 - 力扣(LeetCode)

这个神似我昨天做的那道题,我弯弯绕绕最后还是做出来了,还是没有真正掌握感觉

class Solution {
public:void moveZeroes(vector<int>& nums) {int left = 0, right = 1;for(int left = 0, right = 0; right < nums.size(); ){          if(nums[right] != 0){swap(nums[left], nums[right]);left++, right++;}else{right++;}}}    
};

 在题解区里面看到一些不一样的做法,撒个尿,标记一下,写一写

4. 3114. 替换字符可以得到的最晚时间 - 力扣(LeetCode)

第一次参加周赛,第一个做出来的题目,也只有这一个哈哈哈哈哈哈哈哈哈哈 小姐姐你。。

先看一下我周赛屎一样的答案

class Solution {
public:string findLatestTime(string s) {int i = 0, j = 0;while(s[0] == '?' || s[1] == '?'){if(s[0] == '?' && s[1] == '?' ){s[0] = '1';}if(s[0] == '?' && s[1] == '1' || s[1] == '0'){s[0] = '1';}    if(s[0] == '?' && s[1] != '?' && s[1] != '1'){s[0] = '0';}if(s[0] == '0' && s[1] == '?'){s[1] = '9';}if(s[0] == '1' && s[1] == '?'){s[1] = '1';}}while(s[3] == '?' || s[4] == '?'){if(s[3] == '?'){s[3] = '5';}if(s[3] != '?' && s[4] == '?'){s[4] = '9';}}return s;}
};

真的不知道在干吗。。。

就是太急了 然后思路又不清晰 感觉平时有点依赖题解了,到现在简单中等问题应该自己想一想了

看看灵神的直接判断

其实挺简单的我不知道为什么我当时扯7扯8

对于小时:(00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11)

第一个字符不是0就是1;这要看后面第二个字符的影响。如果第二个字符是?那第一个字符就直接取最大的啊——1;如果第二个字符是比1小的那第一个字符就选1,如果第二个字符是比1大的(2,3,4,5,6,7,8,9)就只能选0,因为最大的是11

第二个字符:当第一个字符是0的时候第二个字符最大可以取9;第一个字符是1 的时候最大只能取1了咯

对于分钟:那就简单了

class Solution {
public:string findLatestTime(string s) {if (s[0] == '?') {s[0] = s[1] == '?' || s[1] <= '1' ? '1' : '0';}if (s[1] == '?') {s[1] = s[0] == '1' ? '1' : '9';}if (s[3] == '?') {s[3] = '5';}if (s[4] == '?') {s[4] = '9';}return s;}
};

我知道了,我自己写的时候就是不清楚代码,程序是顺序结构运行的啊,已经先处理了第一个字符,在处理第二个字符时,还要去讨论第一个字符是?的情况

这种短代码写起来好高级的感觉,可是我现在还是if-else...

class Solution {
public:string findLatestTime(string s) {if(s[0] == '?' ){if(s[1] == '?'){s[0] = '1';}else if(s[1] <= '1'){s[0] = '1';}else{s[0] = '0';}}if(s[1] == '?'){if(s[0] == '1'){s[1] = '1';}else{s[1] = '9';}}    if(s[3] == '?'){s[3] = '5';}if(s[4] == '?'){s[4] = '9';}return s;}
};

下面这个方法暴力枚举

class Solution {
public:string findLatestTime(string s) {for (int h = 11; ; h--) {if (s[0] != '?' && s[0] - '0' != h / 10 || s[1] != '?' && s[1] - '0' != h % 10) {continue;}for (int m = 59; m >= 0; m--) {if (s[3] != '?' && s[3] - '0' != m / 10 || s[4] != '?' && s[4] - '0' != m % 10) {continue;}char ans[6];sprintf(ans, "%02d:%02d", h, m);return string(ans);}}}
};

我天呢 搞半天没搞懂 明白了之后感觉好神奇(对不起,我真的很菜)但是我不知道怎么说

首先就是直接从最大的时间开始循环,,,感觉是一个能不能的问题

5. 3115. 素数的最大距离 - 力扣(LeetCode)

不是小姐姐这个也不难啊 你是为什么做不出。。。

因为我还以为要记录下标然后去找最大的TAT,天爷啊,你脑子转个弯呢!!你直接从左边找从右边找不就好!!这不就是两个距离最大的素数!!

class Solution {bool prime(int n){// 别写成 i < sqrt(n) 是不对滴for(int i = 2; i * i <= n; i++){if(n % i == 0){return false;}}return n >= 2;}
public:int maximumPrimeDifference(vector<int>& nums) {int i, j;for(i = 0; i < nums.size(); i++){if(prime(nums[i]))break;}for(j = nums.size() - 1; j >= 0; j--){if(prime(nums[j]))break;}return j-i;}
};

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

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

相关文章

eclipse导入maven项目与配置使用本地仓库

前言 本人润国外了&#xff0c;发现不能用收费软件IDEA了&#xff0c;需要使用eclipse&#xff0c;这个免费。 但是早忘了怎么用了&#xff0c;在此总结下。 一、eclipse导入本地项目 1.选这个&#xff1a;open projects from file system… 2.找到项目文件夹&#xff0c;…

cookie与session及其区别

一、cookie 1. 为什么需要cookie&#xff1f; web程序使用HTTP协议进行传输&#xff0c;而HTTP协议是无状态的协议&#xff08;即对事务处理无记忆性&#xff0c;如果后续处理需要使用前面的信息&#xff0c;只能重传&#xff0c;导致每次连接传送的数据量增大&#xff09;。c…

AI预测福彩3D第34弹【2024年4月13日预测--第8套算法开始计算第2次测试】

各位小伙伴&#xff0c;今天实在抱歉&#xff0c;周末回了趟老家&#xff0c;回来比较晚了&#xff0c;数据今天上午跑完后就回老家了&#xff0c;晚上8点多才回来&#xff0c;赶紧把预测结果发出来吧&#xff0c;虽然有点晚了&#xff0c;但是咱们前面说过了&#xff0c;目前的…

【团体程序设计天梯赛 往年关键真题 25分题合集 详细分析完整AC代码】(L2-025 - L2-048)搞懂了赛场上拿下这些分就稳了

L2-025 分而治之 并查集 样例 输入样例&#xff1a; 10 11 8 7 6 8 4 5 8 4 8 1 1 2 1 4 9 8 9 1 1 10 2 4 5 4 10 3 8 4 6 6 1 7 5 4 9 3 1 8 4 2 2 8 7 9 8 7 6 5 4 2输出样例&#xff1a; NO YES YES NO NO分析&#xff1a; 先将所有边记录下来&#xff0c;再每次询问时&…

针对MaxCompute优化案例分享

声明 原文来源&#xff1a;微信公众号&#xff1a;阿里云开发者 前言 MaxCompute 是阿里巴巴集团推出的一种大数据计算平台&#xff0c;用于处理海量数据和进行数据分析。它提供了高可靠性、高扩展性和高性能的数据处理能力&#xff0c;支持 SQL 查询、MapReduce 计算和机器…

python|reset_index

reset_index可以重置索引index&#xff0c;比如说将A、B、C删除一列后&#xff0c;重置成数字。

外卖点餐APP开发需要哪些功能

uni-app框架&#xff1a;使用Vue.js开发跨平台应用的前端框架&#xff0c;编写一套代码&#xff0c;可编译到Android、小程序等平台。 框架支持:springboot/Ssm/thinkphp/django/flask/express均支持 前端开发:vue.js 可选语言&#xff1a;pythonjavanode.jsphp均支持 运行软件…

纯css实现switch开关

代码比较简单&#xff0c;有需要直接在下边粘贴使用吧~ html: <div class"switch-box"><input id"switch" type"checkbox"><label></label></div> css&#xff1a; .switch-box {position: relative;height: 25px…

探索以太坊世界:使用Geth打造你的私人网络

文章目录 概要名词解释Geth&#xff08;Go Ethereum&#xff09;区块链网络种类 具体流程下载geth客户端配置私链新建创世区块启动私链 连接MetaMask钱包小结 概要 在区块链领域&#xff0c;以太坊私链的搭建是学习和开发智能合约的重要一步。私链允许开发者在独立的环境中进行…

【vue】用vite创建vue项目

前置要求 要有Node.js 1. 用vite创建vue项目 在cmd中&#xff0c;进入一个文件夹 在文件资源管理器上面的文件目录中&#xff0c;输入cmd&#xff0c;回车在cmd中通过cd命令进入对应文件夹 创建项目 npm create vitelatest # 创建项目创建项目过程中的一些选项 Ok to pro…

pnpm 使用 workspace 报错 ERR_INVALID_THIS

有时候真的感觉如果有一个老师指路&#xff0c;那么遇到的坑真的会少很多。 错误示例&#xff1a; GET https://registry.npmjs.org/rollup%2Fplugin-typescript error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.原因是什么&#xff1f;原因就是 pnpm 的…

Python数据容器(一)

一.数据容器入门 1.Python中的数据容器&#xff1a;一种可以容纳多份数据的数据类型&#xff0c;容纳的每一份数据称之为1个元素&#xff0c;每一个元素&#xff0c;可以是任意类型的数据&#xff0c;如字符串、数字、布尔等。 2.数据容器根据特点的不同&#xff0c;如&#…