当前位置: 首页 > news >正文

【笔记】数据结构12

文章目录

  • 2013年408应用题41
      • 方法一
      • 方法二

看到的社区的一个知识总结,这里记录一下。
知识点汇总

2013年408应用题41

在这里插入图片描述
解决方法:

方法一

(1)算法思想

算法的策略是从前向后扫描数组元素,标记出一个可能成为主元素的元素Num。然后重新计数,确认Num是否是主元素。算法可分为以下两步:

①选取候选的主元素:依次扫描所给数组中的每个整数,将第一个遇到的整数Num保存到c中,记录Num的出现次数为1;若遇到的下一个整数仍等于Num,则计数加1,否则计数减1;当计数减到0时,将遇到的下一个整数保存到c中,计数重新记为1,开始新一轮计数,即从当前位置开始重复上述过程,直到扫描完全部数组元素。

②判断c中元素是否是真正的主元素:再次扫描该数组,统计C中元素出现的次数,若大于n/2,则为主元素;否则,序列中不存在主元素。

(2)代码如下:

#include<stdio.h>
#include<stdlib.h>int Majority(int A[],int n){int i,c,count = 1;//c用来保存候选主元素,count用来计数c=A[0];//设置A[0]为候选主元素for(i=1;i<n;i++){if(A[i]==c)	count++;//对A中的候选主元素进行排序else if(count>0)count--;else {c=A[i];count=1;}}if(count>0){//判断c中元素是否是真正的主元素for(i=count=0;i<n;i++)if(A[i]==c)count++;}if(count>n/2)return c;else return -1;
}

该算法的时间复杂度为O(n),空间复杂度为O(1)。

(与算法一致且回答正确,时间空间各一分)

方法二

采用计数排序的思想

申请一个辅助计数数组,如果数字出现一次则在辅助技术数组中加一,返回查看辅助计数数组,如果出现次数大于n/2,则返回元素max,否则返回-1

#include<stdio.h>
#include<stdlib.h>int Majority(int A[],int n){int k,*p,max;p=(int *)malloc(sizeof(int)*n);//申请辅助计数数组for(k=0;k<n;k++){p[k]=0;}max=0;for(k=0;k<n;k++){p[A[k]]++;if(p[A[k]]>p[max])max=A[k];}if(p[max]>n/2)return max;else return -1;}
http://www.lryc.cn/news/452149.html

相关文章:

  • django的URL配置
  • 精华帖分享 | 因子构建思考1
  • kubernetes笔记(四)
  • 通信工程学习:什么是SNMP简单网络管理协议
  • ubuntu20.04系统下,c++图形库Matplot++配置
  • [激光原理与应用-126]:南京科耐激光-激光焊接 - 焊中无损检测技术 - 智能制程监测系统IPM介绍 - 26- 频域分析法
  • 深入理解 Solidity 修饰符(Modifier):功能、应用与最佳实践
  • YOLO11项目实战1:道路缺陷检测系统设计【Python源码+数据集+运行演示】
  • 怎么屏蔽统计系统统计到的虚假ip
  • 前端开发设计模式——策略模式
  • SysML案例-潜艇
  • 车辆重识别(2020NIPS去噪扩散概率模型)论文阅读2024/9/27
  • 基于深度学习的任务序列中的快速适应
  • 虚拟机三种网络模式详解
  • [leetcode]674_最长连续递增序列
  • 【无人机设计与技术】四旋翼无人机,UAV仿真,轨迹跟踪PID控制
  • 回归预测|基于卷积神经网络-支持向量机的数据回归预测Matlab程序CNN-SVM 卷积提取特征与原始特征进行融合预测
  • javaScript基础知识汇总
  • 《动手学深度学习》笔记2.2——神经网络从基础→进阶 (参数管理-每层的权重/偏置)
  • 双端之Nginx+Php结合PostgreSQL搭建Wordpress
  • Another redis desktop manager使用说明
  • 【git】配置 Git 的换行符处理和安全性||安装 Ruby
  • VMware ESXi 8.0U3b macOS Unlocker OEM BIOS 2.7 Dell HPE 定制版 9 月更新发布
  • Unity 代码裁剪(Strip Engine Code)
  • 单目3d重建DUSt3R 笔记
  • AI驱动TDSQL-C Serverless 数据库技术实战营-与AI的碰撞
  • C++之String类(上)
  • kubernets基础-ingress详细介绍
  • jenkins部署Maven和NodeJS项目
  • 在unity资源中发现无效引用