【笔记】数据结构12

news2024/11/18 22:51:05

文章目录

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

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

相关文章

Learn OpenGL In Qt之炫酷进度条

竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生~ 公众号&#xff1a; C学习与探索 | 个人主页&#xff1a; rainInSunny | 个人专栏&#xff1a; Learn OpenGL In Qt 文章目录 设计实现目录结构需要哪些类接口设计关键函数 实现效果Shader解析GLSL基本函数clampsmoothstep 实现分析效…

【Python】Beaker:轻量级缓存与会话管理的解决方案

Beaker 是一个简单、灵活的 Python 库&#xff0c;主要用于缓存管理和会话管理。作为一个开源项目&#xff0c;Beaker 提供了多种缓存存储后端&#xff0c;帮助开发者在应用中高效管理缓存数据&#xff0c;同时支持会话存储&#xff0c;适合 Web 应用中的用户状态管理。其轻量级…

WebAPI编程(第一天,第二天)

WebAPI编程&#xff08;第一天&#xff0c;第二天&#xff09; day01 - Web APIs1.1. Web API介绍1.1.1 API的概念1.1.2 Web API的概念1.1.3 API 和 Web API 总结 1.2. DOM 介绍1.2.1 什么是DOM1.2.2. DOM树 1.3. 获取元素1.3.1. 根据ID获取1.3.2. 根据标签名获取元素1.3.3. H5…

端侧多模态 | 不到10亿参数的端侧Agent竟媲美GPT-4V?AI手机不远了!

引言 简介 相关工作 模型 编码视觉信息 函数token 多阶段训练 模型评估 发送邮件 发送短信 Google搜索 Amazon购物 智能回收 失物招领 室内设计 Instacart购物 DoorDash(外卖平台)示例 动物护理 总结 引言 青山一道同云雨&#xff0c;明月何曾是两乡。 小伙…

王道-数据结构

1 设数组data[m]作为循环队列的存储空间,front为队头指针,rear为队尾指针,则执行出队操作后其头指针front值为____ 答案:D 解析:队列的头指针指向队首元素的实际位置,因此出队操作后,头指针需向上移动一个元素的位置。循环队列的容量为m,所以头指针front加1以后,需…

CVPR论文《DSVT: Dynamic Sparse Voxel Transformer with Rotated Sets》

1、整体思维导图 2、个人收获 这篇论文在理论上对于我来说可能就是让我大致了解了这个领域&#xff08;因为我的研究方向不是这方面&#xff09;&#xff0c;看完以后也没有看得特别懂&#xff08;说实话&#xff09;。 更多的收获应该是在论文的写作思路上吧 3、下面欣赏论…

分享几个可以免费使用GPT的网站【2024年必备】

1、ChatGPT 链接&#xff1a;点击直达 这个网站可以免费使用GPT4.0和GPT-4o模型&#xff0c;反应速度也很快&#xff0c;还有AI绘画可以体验喔~ 推荐指数&#xff1a;⭐⭐⭐⭐⭐ 2、AI智慧岛 链接&#xff1a;点击直达 推荐指数&#xff1a;⭐⭐⭐⭐⭐ 这个网站可以免费使…

Linux基础(四):文件权限与目录配置

1.使用者、群组、其他人概念 linux下每个文件都有三种权限类别&#xff0c;分别为使用者&#xff08;User&#xff09;、群组&#xff08;Group&#xff09;、其他人&#xff08;Others&#xff09;。这三种权限类别针对的是账号&#xff0c;也就是登录这个Linux系统的用户的账…

告别盲目推广!Xinstall为社交App带来精准流量

在移动互联网时代&#xff0c;社交类App如雨后春笋般涌现&#xff0c;但如何在众多竞争者中脱颖而出&#xff0c;成为用户首选&#xff1f;这不仅是开发者们面临的难题&#xff0c;也是推广者必须攻克的难关。今天&#xff0c;我们就来揭秘一种全新的社交类App推广策略&#xf…

64.【C语言】再议结构体(下)(未完)

本文衔接第63篇 目录 6.复习 7.修改默认对齐数 8.结构体传参 01.传递非指针参数 02.传递指针参数(传递地址) 03.对比 9.结构体实现位段 01.位段的定义 02.格式 03.例题 答案速查 分析 前置知识:位段的内存分配 解析 若按浪费空间处理 验证 6.复习 20.【C语言…

《OpenCV 计算机视觉》—— Harris角点检测、SIFT特征检测

文章目录 一、Harris 角点检测1.基本思想2.检测步骤3.OpenCV实现 二、SIFT特征检测1. SIFT特征检测的基本原理2. SIFT特征检测的特点3. OpenCV 实现 一、Harris 角点检测 OpenCV中的Harris角点检测是一种基于图像灰度值变化的角点提取算法&#xff0c;它通过计算每个像素点的响…

vue2 自定义empty指令

主要思路 定义一个echarts图标&#xff0c;数据为空&#xff0c;image采用base64编码图标宽高根据父宽高自适应渲染echarts函数&#xff0c;切换清除图例定义暂无数据指令 定义option /*** 暂无数据* param {number} width* param {number} height* returns option*/ functi…

全局思维下的联合创新:华为携手ISV伙伴助推银行核心平稳升级

文 | 螳螂观察 作者 | 李永华 随着数字金融快速发展&#xff0c;对核心系统提出了“海量、高效、弹性、扩展、敏捷”等新需求&#xff0c;区域性银行面临核心系统升级的迫切需要&#xff0c;对金融科技厂商而言也催生了庞大的机遇和空间。 只是&#xff0c;银行核心系统是金…

深度学习|求导公式:梯度逆传播规律

文章目录 引言基础函数的求导常数函数幂函数指数函数对数函数三角函数反三角函数双曲函数 复合函数的梯度逆传播链式法则函数相加函数相乘函数相除 结语 引言 我们知道&#xff0c;神经网络的能够学习处理任务的核心是计算损失的梯度&#xff0c;而误差逆传播算法是求梯度的一…

基于OpenCV的实时年龄与性别识别(支持CPU和GPU)

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 社区特色…

842真题上的各种简答题

线性表 1. 应选用链式存储结构&#xff0c;因为链式存储结构采取动态内存分配&#xff0c;可以在操作过程中增加或减少线性表的长度&#xff0c;且插入删除操作更方便 2应该选用顺序存储结构&#xff0c;因为顺序存储结构的访问和存取&#xff0c;都是按照元素序号的随机访问…

VisualGLM-6B——原理与部署

VisualGLM-6B技术原理介绍 VisualGLM-6B 是一种多模态预训练模型&#xff0c;它旨在将视觉和语言模型进行结合&#xff0c;使得语言模型能够理解图像信息并与文本对话无缝结合。为了更好地理解 VisualGLM-6B 的内容&#xff0c;我们可以从以下几个方面来解析它的原理、结构、训…

基于springboot+小程序的自习室选座与门禁管理系统(自习室1)(源码+sql脚本+视频导入教程+文档)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 1、管理员实现了首页、基础数据管理、论坛管理、公告信息管理、用户管理、座位管理等 2、用户实现了在论坛模块通过发帖与评论帖子的方式进行信息讨论&#xff0c;也能对账户进行在线充值…

低代码可视化-uniapp蓝牙标签打印-代码生成器

蓝牙标签打印 蓝牙标签打印技术结合了蓝牙通信与标签打印的功能&#xff0c;为用户提供了一种便捷、高效的打印解决方案。以下是对蓝牙标签打印的详细解析&#xff1a; 蓝牙标签打印机的特点 无线连接&#xff1a;蓝牙标签打印机最大的亮点在于其无线连接方式。用户可以通过蓝…

【Redis基础篇】超详细♥Redis安装教程、5种常用数据结构和常见命令、Jedis和SpringDataRedis的使用

文章目录 一、Redis与客户端安装教程1、NoSQL介绍&#xff08;1&#xff09;结构化与非结构化&#xff08;2&#xff09;关联和非关联&#xff08;3&#xff09;查询方式&#xff08;4&#xff09;事务&#xff08;5&#xff09;总结 2、Redis介绍3、安装Redis&#xff08;1&am…