力扣144A

文章目录

  • 1. 题目链接
  • 2. 题目代码
  • 3. 题目总结
  • 4. 代码分析

1. 题目链接

Arrival of the General

2. 题目代码

#include<iostream>
using namespace std;int heightOfSoldier[110];int main(){int numberOfSoldier;cin >> numberOfSoldier;int maxHeight = -1;int minHeight = 101;int positionOfMaxHeight;int positionOfMinHeight;for(int positionOfSoldier = 1; positionOfSoldier <= numberOfSoldier; positionOfSoldier ++){cin >> heightOfSoldier[positionOfSoldier];if(heightOfSoldier[positionOfSoldier] > maxHeight){maxHeight = heightOfSoldier[positionOfSoldier];positionOfMaxHeight = positionOfSoldier;}if(heightOfSoldier[positionOfSoldier] <= minHeight){minHeight = heightOfSoldier[positionOfSoldier];positionOfMinHeight = positionOfSoldier;}}if(positionOfMaxHeight == 1 && positionOfMinHeight == numberOfSoldier){cout << 0;}else{if(positionOfMaxHeight < positionOfMinHeight){cout << positionOfMaxHeight - 1 + numberOfSoldier - positionOfMinHeight;}else{cout << positionOfMaxHeight + numberOfSoldier - positionOfMinHeight - 2;}}return 0;
}

3. 题目总结

用时:31min
耗时原因:梳理了一下数据的移动过程,发现第二个样例不只有下述一种移动方式。总之就是,不管怎么移动,只要最后能保证最高的的在开头,最矮的在末尾就行。除此之外还应该注意,最高的和最矮的不能同时移动。

4. 代码分析

参考代码来源:
在这里插入图片描述

#include <bits/stdc++.h>using namespace std;
using ll = long long;
using ull = unsigned long long;
using uint = unsigned int;void solve() {int n;cin>>n;vector<int> v(n);for(auto&i:v)   cin >>i;int mx = 0,mxind = 0;int mn = 101,mnind = 0;for(int i =0;i<n;++i){if (v[i]>mx){mx = v[i],mxind = i;}if (v[i]<=mn) mn = v[i],mnind =i;}cout<< mxind + n-1-mnind -(mxind>mnind?1:0);
}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);solve();
}

我的代码耗时:124ms
内存占用:0KB

两端代码运行时间上存在差异的原因(回复来自gpt):
输入/输出效率
              参考代码:使用 cin 进行输入,使用 cout 进行输出。它还通过 ios::sync_with_stdio(false) 关闭了与 stdio 的同步,以便进行更快的输入输出操作。
              我的代码:同样使用 cincout,但没有显式地管理输入输出的同步。
              差异:参考代码显式地管理了输入输出的同步,并且利用向量操作效率高,这样可以减少多次输入输出操作的开销。这使得参考代码通常比我的代码更快,特别是在处理较大输入时更为显著。
数据结构和访问模式
              参考代码:使用向量存储士兵的身高,并直接访问向量元素(v[i]),由于内存连续访问和潜在的编译器优化,这是高效的。
              我的代码:使用固定大小的数组(heightOfSoldier),并通过索引访问元素(heightOfSoldier[positionOfSoldier])。数组访问通常比向量访问稍快,因为内存管理更简单(无需动态调整大小)。
              差异:虽然两段代码都使用数组(参考代码使用向量),但参考代码中向量的使用可能被编译器或标准库实现更好地优化,从而提高性能。
控制流和分支逻辑
              两段代码都涉及查找士兵身高的最大值和最小值的类似逻辑。然而,参考代码中计算结果的逻辑(mxind + n - 1 - mnind - (mxind > mnind ? 1 : 0))可能在分支逻辑上更为优化。
              差异:参考代码中的分支逻辑(mxind > mnind ? 1 : 0)比我的代码中的条件检查(positionOfMaxHeight < positionOfMinHeight)更为简单直接,这可能更容易让编译器进行优化。
              总结来说,参考代码通常由于更高效的输入输出处理、向量操作的优化以及更简洁的分支逻辑,而表现更好。这些优化共同导致参考代码在运行时相比我的代码更为快速,特别是在处理较大输入时表现更为明显。

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

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

相关文章

QT中启动窗口QSplashScreen的使用

1、前言 一个程序启动时,程序需要初始化操作比如加载数据、连接网络,一般来说比较耗时,这个时候为了用户体验,就是在程序主界面完成之前加一个启动界面。 2、关键代码 #include "SplashScreen.h" #include "ui_SplashScreen.h"SplashScreen::Splash…

【科研基础】通感一体化讲座

高斯信道下通信感知一体化的性能极限(刘凡) 通信和感知在硬件结构上相似,高效地利用资源,实现相互的增益; 感知是基于不同的任务,比如目标检测(检测概率,虚警概率),估计任务(从收到的信号中去估计有用的参数,均方误差,CRB),识别(知道目标的语义信息,就是目标…

助力草莓智能自动化采摘,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建果园种植采摘场景下草莓成熟度智能检测识别系统

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;技术已经渗透到我们生活的方方面面&#xff0c;从智能家居到自动驾驶&#xff0c;再到医疗健康&#xff0c;其影响力无处不在。然而&#xff0c;当我们把目光转向中国的农业领域时&#xff0c;一个令人惊讶的…

Go 内存模型与分配机制

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

前端开发流程与技术选型

目录 一、简介 二、前端职责 三、开发步骤 四、技术选型 五、页面展示 一、简介 做一个网站时&#xff0c;能看到的一切都是前端程序员的工作&#xff0c;负责网页或者app的结构、样式、用户操作网站时的事件逻辑&#xff08;比如点击一个按钮&#xff09;。 二、前端职…

2024广东省职业技能大赛云计算赛项实战——容器云平台搭建

容器云平台搭建 前言 容器镜像使用的是斗学培训平台提供的镜像包&#xff0c;这东西网上都没有&#xff0c;一堆人要&#xff0c;我是靠自己想的方法获取到了&#xff0c;也不敢给。你们可以通过在这个网站申请环境进行操作https://ncc.douxuedu.com/ 虚拟机使用的是自行创建…

分类算法和回归算法区别

分类算法和回归算法在机器学习中扮演着不同的角色&#xff0c;它们的主要区别体现在输出类型、应用场景以及算法目标上。以下是对两者区别和使用场景的详细分析&#xff1a; 一、区别 1.输出类型&#xff1a; 分类算法&#xff1a;输出是离散的类别标签&#xff0c;通常表示为…

【网络安全的神秘世界】文件上传、JBOSS、Struct漏洞复现

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 攻防环境搭建及漏洞原理学习 Kali安装docker 安装教程 PHP攻防环境搭建 中间件介绍 介于应用系统和系统软件之间的软件。…

class的流光效果

效果图&#xff1a; 代码示例 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title&g…

链表OJ

GDUFE 在期末前再刷一次链表题 ~ 203. 移除链表元素 - 力扣&#xff08;LeetCode&#xff09; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* removeElements(struct ListNode* head, int …

学习笔记——网络管理与运维——SNMP(SNMP版本)

二、SNMP版本 1、SNMP版本 SNMP共有三个版本&#xff1a;SNMPv1、SNMPv2c和SNMPv3。 (1)SNMPv1 1990年5月&#xff0c;RFC1157定义了SNMP的第一个版本SNMPv1。RFC1157提供了一种监口控和管理计算机网络的系统方法。SNMPv1基于团体名认证&#xff0c;安全性较差&#xff0c;…

快速编译安装tensorrt_yolo

快速编译安装 安装 tensorrt_yolo 通过 PyPI 安装 tensorrt_yolo 模块&#xff0c;您只需执行以下命令即可&#xff1a; pip install -U tensorrt_yolo 如果您希望获取最新的开发版本或者为项目做出贡献&#xff0c;可以按照以下步骤从 GitHub 克隆代码库并安装&#xff1a; …

手机天线都去哪里了?

在手机的演变历程中&#xff0c;天线的设计和位置一直是工程师们不断探索和创新的领域。你是否好奇&#xff0c;现在的手机为什么看不到那些曾经显眼的天线了呢&#xff1f; 让我们一起揭开这个谜题。 首先&#xff0c;让我们从基础开始&#xff1a;手机是如何发出电磁波的&…

WDF驱动开发-中断处理(三)

使用中断唤醒设备 当设备转换为低功耗状态时&#xff0c;框架会断开连接 (或报告为非活动) 用于 I/O 处理的中断。 从在 Windows 8.1 上运行的 KMDF 1.13 和 UMDF 2.0 开始&#xff0c;WDF 驱动程序可以创建一个框架中断对象&#xff0c;该对象在设备转换为低功耗状态时保持活…

【QT】实现无边框窗口+可拖动+可调整大小

QT无边框 // 在widget构造中添加如下即可实现无边框 setWindowFlags(Qt::FramelessWindowHint); //设置无边框可拖动 当实现无边框之后&#xff0c;你会发现无法拖动了。 或许我们需要了解下窗口是怎么被拖动的 通过标题栏拖动窗口move窗口位置 因此有两种方案可以解决无法…

Redis—String数据类型及其常用命令详解

文章目录 Redis概述1.Redis-String数据类型概述2.常用命令2.1 SET&#xff1a;添加或者修改已经存在的一个String类型的键值对2.2 GET&#xff1a;根据key获取String类型的value2.3 MSET&#xff1a;批量添加多个String类型的键值对2.4 MGET&#xff1a;根据多个key获取多个Str…

CDN缓存命中率较低可能的原因

背景&#xff1a; 网站使用CDN加速以后&#xff0c;大部分静态文件都将会被离用户较近的CDN边缘节点缓存&#xff0c;由此起到访问加速效果。如果用户访问的文件由CDN节点直接响应&#xff0c;无需回源&#xff0c;则称之为缓存命中。CDN缓存命中率越高&#xff0c;也就意味着…

腾讯云开端口

轻量服务器 由于开发者计划&#xff0c;这些腾讯云 阿里云什么的小vps&#xff0c;是非常之便宜&#xff0c;甚至到了白送的地步&#xff08;小阿&#xff09;&#xff0c;但是作为一个web安全学习者必要的vps操作还是要会的 开启端口 腾讯云的轻量服务器是没有安全组的&…

【服务器02】之阿里云平台

百度一下阿里云官网 点击注册直接使用支付宝注册可以跳过认证 成功登录后&#xff0c;点击产品 点击免费试用 点击勾选 选一个距离最近的 点满GB 注意&#xff1a;一般试用的时用的是【阿里云】&#xff0c;真正做项目时用的是【腾讯云】 现在开始学习使用&#xff1a; 首先…

排序方法——《归并排序》

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 博主主页&#xff1a;Yan. yan.                        …