去重求和(最大N个数和最小N个数的和)(C 语言)

题目

给定一个数组,编写一个函数,
计算他的最大N个数和最小N个数的和,
需要对数组进行去重。

输入

第一行输入MM表示数组大小
第二行输入M个数,表示数组内容
第三行输入N表示需要计算的最大最小N的个数

输出

输出最大N个数和最小N个数的和

示例一

输入
5
95 88 83 64 100
2
输出
342
说明

最大2个数[100 95]最小 2 个数[83 64]
输出342

示例二

输入
5
3 2 3 4 2
2
输出
-1
说明

最大2个数是[4 3]最小2个数是[3 2]
有重叠输出为-1

思路

解题思路如下:

  1. 读取输入

    • 首先,程序读取数组的大小 M
    • 然后,依次读取并存储数组中的 M 个整数到动态数组 nums 中。
    • 接着,读取需要计算的最大最小数的数量 N
  2. 排序数组

    • 使用 qsort 函数对数组进行降序排序,以便后续可以快速找到最大和最小的数。
  3. 数组去重

    • 遍历已排序的数组,当遇到重复元素时,将其从数组中移除。通过更新数组长度来保持有效数据范围。
  4. 计算结果

    • 初始化结果变量 res-1,表示存在重复数字的情况下的输出结果。
    • 检查经过去重处理后的数组长度是否大于等于 2 * N。如果满足条件,则将结果初始化为 0 并重新计算。
    • 遍历数组,将位于数组两端(前 N 个和后 N 个)的数累加到结果变量 res 中。
  5. 输出结果

    • 输出最终计算得到的最大 N 个数和最小 N 个数的和。

代码

#include <stdio.h>
#include <stdlib.h>// 定义一个比较函数,用于对整数数组进行降序排序
int cmp(const void *a, const void *b) {return *(int *)b - *(int *)a; // 返回 b - a 的值,实现降序排列
}int main() {int length;scanf("%d", &length); // 读取数组长度 M// 初始化动态数组 nums,用于存储输入的整数int nums[length];for (int i = 0; i < length; i++) {scanf("%d", &nums[i]); // 读取数组中的每个元素}int n;scanf("%d", &n); // 读取需要计算的最大最小 N 的个数// 使用 qsort 函数对数组进行降序排序qsort(nums, length, sizeof(int), cmp);// 对排序后的数组进行去重操作for (int i = 0; i < length - 1;) {if (nums[i] == nums[i + 1]) { // 如果当前元素与下一个元素相等(即重复)// 将重复元素移除并将后续元素前移for (int j = i; j < length - 1; j++)nums[j] = nums[j + 1];length--; // 数组有效长度减一} else {i++; // 若无重复,则继续检查下一个元素}}// 计算去重后数组中最大 N 个数和最小 N 个数的和int res = -1; // 初始化结果为 -1,表示有重复时的结果if (n * 2 <= length) { // 如果要去重后数组长度大于等于 2Nres = 0;           // res置0,开始累加// 遍历数组,将前 N 个和后 N 个数累加到结果中for (int i = 0; i < length; i++) {if (i < n || i >= length - n) {res += nums[i];}}}printf("%d\n", res); // 输出最大 N 个数和最小 N 个数的和return 0;
}

文章目录

      • 题目
      • 输入
      • 输出
      • 示例一
        • 输入
        • 输出
        • 说明
      • 示例二
        • 输入
        • 输出
        • 说明
    • 思路
    • 代码

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

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

相关文章

NestJS入门7:增加异常过滤器

前文参考&#xff1a; NestJS入门1 NestJS入门2&#xff1a;创建模块 NestJS入门3&#xff1a;不同请求方式前后端写法 NestJS入门4&#xff1a;MySQL typeorm 增删改查 NestJS入门5&#xff1a;加入Swagger NestJS入门6&#xff1a;日志中间件 本文代码基于上一篇文章《…

深度学习基础(二)卷积神经网络(CNN)

之前的章节我们初步介绍了深度学习相关基础知识和训练神经网络&#xff1a; 深度学习基础&#xff08;一&#xff09;神经网络基本原理-CSDN博客文章浏览阅读924次&#xff0c;点赞13次&#xff0c;收藏19次。在如今的科技浪潮中&#xff0c;神经网络作为人工智能的核心技术之…

关于git子模块实践(一)

背景 在日常项目开发中&#xff0c;随着项目的迭代&#xff0c;不可避免的是主项目会引入到很多三方库&#xff0c;或者自研的一些模块。有一种场景&#xff0c;就是这些模块&#xff0c;是随着开发而进行迭代&#xff0c;且多个项目公用的&#xff0c;这种情况&#xff0c;在…

第3.3章:StarRocks数据导入——Stream Load

一、概述 Stream Load是StarRocks最为核心的导入方式&#xff0c;用户通过发送HTTP请求将本地文件或数据流导入至StarRocks中&#xff0c;其本身不依赖其他组件。 Stream Load支持csv和json两种数据文件格式&#xff0c;适用于数据文件数量较少且单个文件的大小不超过10GB 的场…

v-rep插件

v-rep官网插件汉化教程 官网教程 插件是什么 插件本质上就是遵循一定规范的API编写出来的程序&#xff0c;在v-rep中最终需要编译为动态库。 linux下是libsimXXXX.so&#xff1b; 其中XXXX是插件的名称。 请至少使用4个字符&#xff0c;并且不要使用下划线&#xff0c;因为…

kafka生产者2

1.数据可靠 • 0&#xff1a;生产者发送过来的数据&#xff0c;不需要等数据落盘应答。 风险&#xff1a;leader挂了之后&#xff0c;follower还没有收到消息。。。。 • 1&#xff1a;生产者发送过来的数据&#xff0c;Leader收到数据后应答。 风险&#xff1a;leader应答…

【机器学习】数据清洗——基于Numpy库的方法删除重复点

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

解锁网络潜能:深入探索SCTP及其在现代通信中的革命性作用

第一部分&#xff1a;SCTP简介 流控制传输协议&#xff08;SCTP&#xff09;是一种传输层协议&#xff0c;设计用于支持Internet上的多路径消息传输。它结合了TCP的可靠性和UDP的简洁性&#xff0c;提供了多种高级特性&#xff0c;如多宿&#xff08;multi-homing&#xff09;…

解释Iterable和Iterator接口

在Java中&#xff0c;Iterable和Iterator是两个重要的接口&#xff0c;它们在集合框架中扮演着核心的角色&#xff0c;尤其是在遍历集合元素的时候。 Iterable接口 Iterable接口是Java Collections Framework的一部分&#xff0c;位于java.lang包中。任何实现了Iterable接口的…

PostgreSQL索引篇 | BTree

B-Tree索引 &#xff08;本文为《PostgreSQL数据库内核分析》一书的总结笔记&#xff0c;需要电子版的可私信我&#xff09; B树特点&#xff1a; 非叶子节点含一个或多个关键字值和子节点指针&#xff0c;不指向实际数据的存储位置所有关键字都是叶子节点&#xff0c;每个叶…

Python运算符你学会了吗?

1.算术运算符 &#xff08;加&#xff09;、-&#xff08;减&#xff09;、*&#xff08;乘&#xff09;、/&#xff08;除&#xff09;、%&#xff08;取余&#xff09;、//&#xff08;取整&#xff09;、**&#xff08;求幂&#xff09; a 12 b 3 c 7print(a b) # 15 …

关于Kinect 互动沙盘 深度图 Shader Graph 分层

把Kinect的深度图穿给Shader Graph using com.rfilkov.kinect; using UnityEngine; using UnityEngine.UI; public class GetDepthTex : MonoBehaviour { public Material Mat_SandTable; void Update() { Mat_SandTable.SetTexture("_MainTex"…

【openGL教程08】关于着色器(02)

LearnOpenGL - Shaders 一、说明 着色器是openGL渲染的重要内容&#xff0c;客户如果想自我实现渲染灵活性&#xff0c;可以用着色器进行编程&#xff0c;这种程序小脚本被传送到GPU的显卡内部&#xff0c;起到动态灵活的着色作用。 二、着色器简述 正如“Hello Triangle”一章…

【寸铁的刷题笔记】树、dfs、bfs、回溯、递归(二)

【寸铁的刷题笔记】树、dfs、bfs、回溯、递归(二) 大家好 我是寸铁&#x1f44a; 金三银四&#xff0c;树、dfs、bfs、回溯、递归是必考的知识点✨ 快跟着寸铁刷起来&#xff01;面试顺利上岸&#x1f44b; 喜欢的小伙伴可以点点关注 &#x1f49d; 上期回顾 感谢大家的支持&am…

简单的单层感知机(Perceptron)模型

[‘您需要实现一个简单的单层感知机&#xff08;Perceptron&#xff09;模型&#xff0c;并提供对其训练方法的实现。单层感知机是一种基础的线性二分类器&#xff0c;它对输入向量进行权值组合&#xff0c;然后通过激活函数&#xff08;通常是一个符号函数&#xff09;来决定该…

[附完整代码]群智能算法跑21种真实世界优化问题,并输出结果到excel||群智能算法跑CEC 2020真实世界优化问题,并输出结果到excel

1、简介 灰狼算法跑跑21种真实世界优化问题|足球训练队优化算法跑21种真实世界优化问题||牛顿拉夫逊算法跑21种真实世界优化问题||冠状豪猪CPO跑21种真实世界优化问题。 ‘FTTA’,‘BWO’, ‘CPO’, ‘FHO’, ‘GWO’, ‘HHO’, ‘NRBO’,‘SCA’,‘SGA’,WOA’跑21种真实世…

拓扑矩阵是四维协变量吗?

* 现在需要明确&#xff0c;拓扑矩阵的维度高于链表数据&#xff0c;那么用矩阵就可以控制链表数据&#xff0c;用矩阵表来 * 做循环&#xff0c;四维循环相当于三维向量的矢量运动嘛&#xff1f;我们在矩阵上面做计算也可以启动链表的运 * 动控制模型。。 * * 四维算法中应…

Linux:ACL权限,特殊位和隐藏属性

目录 一.什么是ACL 二.操作步骤 ① 添加测试目录、用户、组&#xff0c;并将用户添加到组 ② 修改目录的所有者和所属组 ③ 设定权限 ④ 为临时用户分配权限 ⑤ 验证acl权限 ⑥ 控制组的acl权限 三. 删除ACL权限 一.什么是ACL 访问控制列表 (Access Control List):ACL 通…

笔记本Win 10系统查看电池健康状况

博主最近换了个笔记本电池&#xff0c;之前的电池容量明显变小了很多&#xff0c;而且出现了轻微鼓包的情况。所以用gpt问了一下怎么用系统的方法查看电池情况。 在Windows 10系统中&#xff0c;您可以通过以下步骤来查看笔记本电脑电池的健康状况&#xff1a; 打开命令提示符&…

docker 带端口映射启动是报错

一、现象 docker端口映射或启动容器时报错 Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 二 、原因: docker服务启动时定义的自定义链DOCKER由于 centos7 firewall 被清掉 firewall的底层是使用iptables进行数据…