11.哀家要长脑子了!

news2024/9/21 22:41:10

目录

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.coloradmin.cn/o/1596946.html

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

相关文章

构建第一个ArkTS用的资源分类与访问

应用开发过程中&#xff0c;经常需要用到颜色、字体、间距、图片等资源&#xff0c;在不同的设备或配置中&#xff0c;这些资源的值可能不同。 应用资源&#xff1a;借助资源文件能力&#xff0c;开发者在应用中自定义资源&#xff0c;自行管理这些资源在不同的设备或配置中的表…

Redis实现延迟任务的几种方案

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 目录 1.前言 2.Redis如何实现延迟任务&#xff1f; 3.代码实现 3.1. 过期键通知事…

【Java】maven的生命周期和概念图

maven的生命周期&#xff1a; 在maven中存在三套"生命周期"&#xff0c;每一套生命周期,相互独立,互不影响的,但是中同一套生命周期里,执行后面的命令会自动先执行前面的命令 CleanLifeCycle&#xff1a;清理的生命周期 clean defaultLifeCycle&#xff1a;默认的…

智能物联网远传冷水表管理系统

智能物联网远传冷水表管理系统是一种基于物联网技术的先进系统&#xff0c;旨在实现对冷水表的远程监测、数据传输和智能化管理。本文将从系统特点、构成以及带来的效益三个方面展开介绍。 系统特点 1.远程监测&#xff1a;系统可以实现对冷水表数据的远程监测&#xff0c;无…

趣话最大割问题:花果山之群猴博弈

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 编辑丨浪味仙 排版丨 沛贤 深度好文&#xff1a;3000字丨15分钟阅读 趋利避害&#xff0c;是所有生物遵循的自然法则&#xff0c;人类也不例外。 举个例子&#xff0c;假如你是某生鲜平台的配…

【Entity Framework】你要知道EF中功能序列与值转换

【Entity Framework】你要知道EF中功能序列与值转换 文章目录 【Entity Framework】你要知道EF中功能序列与值转换一、序列1.1 基本用法1.2 配置序列设置 二、值转换2.1 配置值转换器2.2 批量配置值转换器2.3 预定义的转换2.4 ValueConverter类2.5 内置转换器 三、应用3.1 简单…

Vue3基础笔记(3)高级绑定

一.Class绑定 数据绑定的一个常见需求场景师操纵元素的CSS class列表&#xff0c;因为class是attribute&#xff0c;我们可以和其他attribute一样使用v-bind将他们和动态的字符串绑定&#xff0c;但是在处理较为复杂的绑定时&#xff0c;拼接字符串容易出现错误。因此Vue专门为…

Python开源工具库使用之词云Wordcloud

文章目录 前言一、基本使用1.1 文本生成词云1.2 配置项 二、进阶用法2.1 自定义形状2.2 自定义着色2.3 自定义词频2.4 中文 三、实际案例3.1 工作报告词云3.2 周杰伦歌词词云 四、总结4.1 优点和局限性4.2 展望未来发展 参考 前言 当我们需要将大量文本数据可视化展示时&#…

为了执行SQL语句,MySQL的架构是怎样设计的

1. 把MySQL当个黑盒子一样执行SQL语句 上一讲我们已经说到&#xff0c;我们的系统采用数据库连接池的方式去并发访问数据库&#xff0c;然后数据库自己其实也会维护一个连 接池&#xff0c;其中管理了各种系统跟这台数据库服务器建立的所有连接 我们先看下图回顾一下 当我们的…

【PostmanJMeter】使用Postman和JMeter进行signature签名

一、前言 ​ 有些接口的请求会带上sign&#xff08;签名&#xff09;进行请求&#xff0c;各接口对sign的签名内容、方式可能不一样&#xff0c;但一般都是从接口的入参中选择部分内容组成一个字符串&#xff0c;然后再进行签名操作, 将结果赋值给sign; 完整规范的接口文档都会…

使用深度学习集成模型进行乳腺癌组织病理学图像分类

基于预训练的VGG16和VGG19架构训练了四种不同的模型&#xff08;即完全训练的 VGG16、微调的 VGG16、完全训练的 VGG19 和微调的 VGG19 模型&#xff09;。最初&#xff0c;我们对所有单独的模型进行了5倍交叉验证操作。然后&#xff0c;我们采用集成策略&#xff0c;取预测概率…

(一)C++自制植物大战僵尸集成开发环境安装

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/uzrnw 1、下载Visual Studio集成开发环境 首先在微软官网下载Visual Studio 2022 Community版本。Community版本是免费的&#xff0c;并且满足个人开发的各种需求。Visual Studio 2022 下载链接&#xff1a;微软官网。选…

maven引入外部jar包

将jar包放入文件夹lib包中 pom文件 <dependency><groupId>com.jyx</groupId><artifactId>Spring-xxl</artifactId><version>1.0-SNAPSHOT</version><scope>system</scope><systemPath>${project.basedir}/lib/Spr…

[lesson33]C++中的字符串类

C中的字符串类 历史遗留问题 C语言不支持真正意义上的字符串C语言用字符数组和一组函数实现字符串操作C语言不支持自定义类型&#xff0c;因此无法获得字符串类型 解决方案 从C到C的进化过程引入自定义类型在C中可以通过类完成字符串类型的定义 标准库中的字符串类 C语言直…

蓝桥杯——玩具蛇

题目 小蓝有—条玩具蛇&#xff0c;一共有16节&#xff0c;上面标着数字1至16。每—节都是一个正方形的形状。相邻的两节可以成直线或者成90度角。 小蓝还有一个44的方格盒子&#xff0c;用于存放玩具蛇&#xff0c;盒子的方格上依次标着字母A到Р共16个字母。 小蓝可以折叠自…

什么是分组分析法

调查数据显示&#xff0c;2019 年年末中国大陆总人口 140005 万人。从年龄构成看&#xff0c;16 至 59 周岁年末人数为 89640 万&#xff0c;占总人口的比重为 64.0%&#xff1b;60 周岁及以上人口 25388 万人&#xff0c;占总人口的 18.1%&#xff0c;其中 65 周岁及以上人口 …

力扣LeetCode138. 复制带随机指针的链表 两种解法(C语言实现)

目录 题目链接 题目分析 题目定位&#xff1a; 解题思路 解题思路1&#xff08;粗暴但是复杂度高&#xff09; 解题思路2&#xff08;巧妙并且复杂度低&#xff09; 题目链接 138. 复制带随机指针的链表https://leetcode-cn.com/problems/copy-list-with-random-pointer/ …

OpenCV基本图像处理操作(一)——图像基本操作与形态学操作

环境配置地址 图像显示 import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB imgcv2.imread(cat.jpg) img_gray cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) img_gray.shape cv2.imshow("img_gray", img_gray) cv2…

【详解算法流程+程序】DBSCAN基于密度的聚类算法+源码-用K-means和DBSCAN算法对银行数据进行聚类并完成用户画像数据分析课设源码资料包

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一个比较有代表性的基于密度的聚类算法。 与划分和层次聚类方法不同&#xff0c;它将簇定义为密度相连的点的最大集合&#xff0c;能够把具有足够高密度的区域划分为簇&#xff0c; 并可在噪声的空间数据…

使用webpack5+TypeScript+npm发布组件库

一、前言 作为一只前端攻城狮&#xff0c;没有一个属于自己的组件库&#xff0c;那岂不是狮子没有了牙齿&#xff0c;士兵没有了武器&#xff0c;姑娘没有了大宝SOD蜜&#xff0c;你没有了我.... 言归正传&#xff0c;下面将给大家介绍如何通过webpack5编译一个TS组件发布到NPM…