数据结构实训(一)--- 1
时间:2020-03-24
本文章向大家介绍数据结构实训(一)--- 1,主要包括数据结构实训(一)--- 1使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
数组主元素(2013考研题)
1.
【问题描述】
已知一个整数序列A长度为N其中若存在a且a的个数大于N/2则称为A的主元素
例如0 5 5 3 5 7 5 5 则为主元素 5
又如0 5 5 3 5 1 5 7则中没有主元素。
假设的元素保存在一个一维数组中,请设计一个尽可能高效的算法,找出的主元素。若存在主元素则输出该元素否则输出-1。
【输入形式】
一个整数数组
【输出形式】
主元素
【样例输入】
0 5 5 3 5 7 5 5
【样例输出】
5
【样例说明】
长度为8,共有5个5。
个人方法:(暴力破解)
#include <iostream> #include <vector> #include <cstdio> using namespace std; int main() { vector<int> input; int num; char ch; // 接收数据 并压入向量 do { cin >> num; input.push_back(num); } while( (ch=getchar()) != EOF && ch != '\n'); // 双层遍历统计 每个数的次数 for (int j=0; j<input.size(); j++) { int cont = 0; // 出现次数变量初始化 for(int i=j; i<input.size(); i++) // 从a[j]开始,对其后面出现次数进行计数 { if(input[i] == input[j]) { cont++; } } if(cont*2>input.size()) // 满足条件程序结束 { cout<< input[j]; return 0; } } cout << "-1"; return 0; }
老师讲解:
#include<iostream> #include<sstream> using namespace std; int main() { string line; getline(cin, line); // 获取一行输入 istringstream ss(line); // 转换为输入流 int a[100]; int N = 0; while(ss>>a[N]) // 输入流内容 传入 a[N] 类似cin输入 { N++; } int cont[N]= {0}; // 开辟与输入数据相同的大小的数组 并初始化为0 用来计数 for(int i=0; i<N; i++) { cont[a[i]]++; // cont数组计算 值为a[i] 的出现次数 if(cont[a[i]]>N/2) // 判断cont数组 中a[i] 的出现次数 若满足条件程序退出 { cout << a[i]; return 0; } } cout << "-1"; return 0; }
个人总结:
以cont数组中的下标与输入数组中的值进行映射关系,充分利用两数组数组之间的关系进行解题。
知识拓展:
c++中,未知数据量进行数据读入,可采用老师讲解的方法。 c语言中可采用个人方法中的代码。
原文地址:https://www.cnblogs.com/DullRabbit/p/12558317.html
- Shiro中的授权问题
- Spring Cloud中服务的发现与消费
- 使用Spring Cloud搭建高可用服务注册中心
- 从Netflix的Hystrix框架理解服务熔断和服务降级
- 使用Spring Cloud搭建服务注册中心
- 技术分享 | kafka的使用场景以及生态系统
- WebSocket刨根问底(二)
- WebSocket刨根问底(三)之群聊
- SDNLAB群分享(四):利用ODL下发流表创建VxLAN网络
- 一个简单的案例带你入门Dubbo分布式框架
- Ajax上传图片以及上传之前先预览
- Spring Cloud中Hystrix的服务降级与异常处理
- Open vSwitch源码解析之基于VxLAN实现NSH解析功能
- Spring Cloud自定义Hystrix请求命令
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 解决java的http请求库dongliu.requests请求结果中文乱码的问题
- 保姆级教程,手把手教你实现一个SpringBoot的starter
- 微服务[学成在线] day05:消息中间件 RabbitMQ
- 微服务[学成在线] day06:页面发布以及课程管理
- 微服务[学成在线] day07:课程管理开发
- 微服务[学成在线] day08:FastDFS 实现课程图片管理
- 【MySQL入门】之细说脏读、幻读及不可重复读
- 微服务[学成在线] day09:Eureka、Feign、课程预览实现
- 【MySQL入门】之MySQL数据库的锁机制(一)
- 【MySQL入门】之MySQL数据库的锁机制(二)
- 【MySQL】删库别着急跑路(一)--Xtrabackup的原理及使用
- 微服务[学成在线] day11:基于 ElasticSearch 构建搜索服务
- 【MySQL】删库别着急跑路(二)--mysqldump的使用
- 【MySQL】删库别着急跑路(三)--binlog2sql闪回工具的使用
- 微服务[学成在线] day10:课程发布、ElasticSearch