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

【2013年数据结构真题】


highlight: a11y-dark

41题

王道解析:

image.png

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

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

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

int Majority(int A[], int n) {int i, c, count = 1; //c用来保存候选主元素,count用来计数c = A[0];  //设置A[O]为候选主元素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)for (i = count = 0; i < n; i++) //统计候选主元素的实际出现次数if (A[i] == c)count++;if (count > n / 2) return c; //确认候选主元素else return -1; //不存在主元素
}

最优解:

int find(int A[],int n){QuickSort(A,0,n-1);//快速排序O(nlog2n)int k,max=0,count=1;for(int i=0;i<n-1;++i){if(A[i+1]==A[i]){count++;}else{if(count>max){max=count;k=A[i];}count=1;}   }if(max>n/2)return k;elsereturn -1;
}

暴力解1

int fun ( int A[], int n ) {int* B = (int*) malloc( sizeof (int) * n ) ;for ( int i = 0; i < n; ++i )B[i] = 0 ;int i, k ;int max = 0 ;for ( i = 0; i < n; ++i )if ( A[i] > 0 && A[i] <= n )B[A[i] - 1]++ ;for ( i = 0; i < n; ++i )if ( B[i] > max ) {max = B[i] ;k = i ;}if ( max > n / 2 )return k + 1 ;elsereturn -1 ;
}

暴力解2:双层循环

  • 选择数组的每一个元素i
  • 统计i在整个数组出现的次数
  • 如果大于n/2则返回

题目要求我们查找是否存在主元素,那可以直接定义找到为1,没找到为0,并写好注释。既然要找某个数是否满足主元素的性质,那就每个数去检查是否为主元素,要检查每个元素,则需要遍历。

int majority(int A[], n) {int m;//遍历每一个元素for (int i = 0; i < n; i++) {//由于每次遍历的元素 都是从0开始统计出现的次数m=0;for (int j = 0; j < n; j++)if (A[i] == A[j])m++;if (m > n / 2) { //找到了主元素return A[m];}}//未找到主元素return -1;
}

相关文章:

【2013年数据结构真题】

highlight: a11y-dark 41题 王道解析&#xff1a; 算法的策略是从前向后扫描数组元素&#xff0c;标记出一个可能成为主元素的元素Num 。然后重新计数&#xff0c;确认Num是否是主元素。算法可分为以下两步&#xff1a; 选取候选的主元素&#xff1a;依次扫描所给数组中的每个…...

csrf学习笔记总结

跨站请求伪造csrf csrf概述 掌握CSRF 漏洞原理 掌握CSRF 漏洞场景 掌握CSRF 漏洞验证 csrf原理 ​ 跨站请求伪造&#xff08;Cross Site Request Forgery&#xff0c;CSRF&#xff09;是一种攻击&#xff0c;它强制浏览器客户端用户在当前对其进行身份验证后的Web 应用程…...

【kafka】windows安装启动

1.zookeeper的安装与启动 快速打开window powershell&#xff1a; windowx&#xff0c;选 2.kafka下载 —注意kafka和zookeeper需要版本匹配 安装路径 注意&#xff0c;kafka安装目录不能有空格。文件下载到&#xff1a; D:\Program_Files\kafka_2.12-3.6.0新建logs文件 修改c…...

redis的基本命令,并用netty操作redis(不使用springboot或者spring框架)就单纯的用netty搞。

大家如果对使用netty搞这些http请求什么的感兴趣的&#xff0c;可以参观我自己创建的这个项目。 nanshaws/nettyWeb: 复习一下netty&#xff0c;并打算做一个web项目出来 (github.com) Redis的基本命令包括&#xff1a; SET key value&#xff1a;设置指定key的值。 GET key…...

《白帽子讲web安全》笔记

第八章 文件上传漏洞 文件上传漏洞是指用户上传了一个可执行的脚本文件&#xff0c;并通过此脚本文件获得了执行服务器端命令的能力 文件上传后导致的常见安全问题一般有&#xff1a; ❍ 上传文件是Web脚本语言&#xff0c;服务器的Web容器解释并执行了用户上传的脚本&#xf…...

unity UGUI无限循环滚动居中

最近在做一个ui循环滚动的功能&#xff0c;网上找了半天脚本感觉都和我实际需求不太符合&#xff0c;自己花费一些时间完成了这个功能记录一下。下面开始正题 &#xff0c;我是采用unity自带组件Scroll View来完成&#xff0c;首先设置Scroll View如下图 面板层级结构如下 然…...

人工智能与新能源电动车的融合——技术创新引领未来交通革命

人工智能与新能源电动车的融合——技术创新引领未来交通革命 摘要&#xff1a;本文探讨了人工智能与新能源电动车领域的技术融合&#xff0c;分析了其在智能驾驶、电池技术、充电设施等方面的应用与创新。文章指出&#xff0c;这两大技术的结合将重塑交通产业&#xff0c;为我…...

交换机堆叠 配置(H3C)堆叠中一台故障如何替换

交换机堆叠 配置&#xff08;H3C&#xff09;堆叠中一台故障如何替换 堆叠用来干什么&#xff1f;配置两台成员设备的 IRF&#xff08;堆叠&#xff09;Switch01配置Switch02配置 如何替换堆叠中坏掉的一台交换机 堆叠用来干什么&#xff1f; 一台交换机网口有限&#xff0c;无…...

2024年软考有哪些考试科目?具体考什么内容?

软考分为三个考试层次&#xff0c;软考初级、中级和高级&#xff0c;每个层次的考试科目&#xff0c;其考试内容都是不一样的。报考时先选层次&#xff0c;再选科目。选好科目后&#xff0c;再看自己需要学习哪些内容。 一、软考初级科目 1.程序员&#xff1a; 考核内容&…...

2023.11.12 hive中分区表,分桶表与区别概念

1.分区表 分区表的本质就是在分目录 当Hive表对应的数据量大、文件多时&#xff0c;为了避免查询时全表扫描数据。比如把一整年的数据根据月份划分12个月&#xff08;12个分区&#xff09;&#xff0c;后续就可以查询指定月份分区的数据&#xff0c;尽可能避免了全表扫描查询。…...

Pass-中间件管理

中间件管理是指对应用软件和操作系统之间的软件层进行管理和调度的过程&#xff0c;以优化应用性能和提高系统可靠性。 中间件管理是什么&#xff1f; 中间件管理是软件开发过程中不可或缺的一部分&#xff0c;它主要负责管理应用程序与操作系统之间的交互。中间件&#xff0…...

什么是GIL锁,有什么作用?python的垃圾回收机制是什么样的?解释为什么计算密集型用多进程,io密集型用多线程。

1 什么是gil锁&#xff0c;有什么作用&#xff1f; 2 python的垃圾回收机制是什么样的&#xff1f; 3 解释为什么计算密集型用多进程&#xff0c;io密集型用多线程。 1 什么是gil锁&#xff0c;有什么作用&#xff1f; 1 GIL&#xff1a;Global Interpreter Lock又称全局解释器…...

Postman如何发送Https请求

Postman如果想要发送Https请求&#xff0c;需要从设置中将SSL安全认证禁用...

Redis集群启动

配置项 # 允许Redis监听所有网络接口的IP地址,即0.0.0.0。这意味着Redis可以接受来自任何网络接口的连接。 bind 0.0.0.0 # 关闭保护模式。在保护模式下,Redis只接受来自本机的连接。关闭保护模式后,Redis可以接受来自任何网络接口的连接。 protected-mode no # 在后…...

使用proxy把后端返回的图片域名替换成目标域名

proxy 对象用于创建一个对象的代理&#xff0c;是在目标对象之前架设一个拦截&#xff0c;外界对该对象的访问&#xff0c;都必须先通过这个拦截。通过这种机制&#xff0c;就可以对外界的访问进行过滤和改写。 ES6 原生提供 Proxy 构造函数&#xff0c;用来生成 Proxy 实例。…...

css实现div倾斜效果

效果如下&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head> <style> *{margin:0;padding: 0;} .box1{margin:30px 100px;width:100px;height:200px;background:blueviolet;} …...

算法学习打卡day45|动态规划:股票问题总结

Leetcode股票问题总结篇 动态规划的股票问题一共六道题&#xff0c;买卖股票最佳时机和买卖股票手续费都是一个类型的问题&#xff0c;维护好买入和卖出两个状态即可&#xff0c;方法一摸一样。而冷冻期也差不多就是状态多了点&#xff0c;买入、保持卖出、当日卖出、以及冷冻期…...

内网环境下让容器上网,并制作一个httpd容器

1.下载基础镜像 上一次&#xff0c;我们通过正向互联网代理在内网环境中&#xff0c;搭建了一个docker环境&#xff0c;具体环境如下&#xff1a; 1) 内网docker服务器&#xff1a;192.168.123.1&#xff0c;操作系统为&#xff1a;redhat 7.9 2) 代理服务器(可通外网)&#…...

多个Obj模型合并

MergeObj&#xff08;合并Obj模型&#xff09; 1 概述 由于项目原因&#xff0c;需要下载谷歌地图上的模型&#xff0c;关于谷歌模型下载的&#xff0c;见我的CSDN博客. 由于下载谷歌地图上的数据&#xff0c;会分多个模块下载。下载完成后&#xff0c;怎么合并&#xff0c;在…...

Qt调用python写好的函数,利用Python丰富的图像处理库来完成各种任务

一、前言 近年来,Python已经成为一种广泛应用于科学计算、数据分析和机器学习等领域的强大编程语言。其丰富的生态系统和大量的开源库使得Python成为处理图像、音频、视频和其他多媒体数据的理想选择。在图像处理领域,Python提供了许多方便的函数和库,如OpenCV、PIL(Pytho…...

用Python+OpenCV手把手实现Prewitt边缘检测(附完整代码与效果对比图)

用PythonOpenCV手把手实现Prewitt边缘检测&#xff08;附完整代码与效果对比图&#xff09; 边缘检测是计算机视觉中最基础也最关键的预处理步骤之一。想象一下&#xff0c;当你需要让计算机"看清"一张照片中的物体轮廓时&#xff0c;边缘检测算法就是它的"视觉…...

从多路复用到三维光阵:Arduino驱动8x8x8 LED立方体全解析

1. 项目概述&#xff1a;用Arduino点亮一个三维世界几年前&#xff0c;我第一次在创客展上看到一个8x8x8的LED立方体&#xff0c;那种由数百个光点构成的、在三维空间中流动的动画效果&#xff0c;瞬间就把我吸引住了。它不像普通的平面LED屏&#xff0c;而是真正有“深度”的光…...

MongoDB Limit 与 Skip 方法详解

MongoDB Limit 与 Skip 方法详解 引言 MongoDB 是一个高性能、可伸缩的文档存储系统,它提供了强大的数据存储和查询功能。在处理大量数据时,Limit 与 Skip 方法是 MongoDB 中常用的查询优化工具。本文将详细介绍 MongoDB 中的 Limit 与 Skip 方法,包括其基本用法、性能影响…...

国产麒麟系统上编译GDAL 3.2.1踩坑记:从PROJ6依赖缺失到Qt环境集成

麒麟系统GDAL 3.2.1编译实战&#xff1a;PROJ6依赖修复与Qt工程深度集成在国产操作系统生态中部署地理数据处理工具链&#xff0c;往往会遇到比常规Linux发行版更复杂的依赖问题。最近在麒麟系统上为北斗定位项目编译GDAL 3.2.1时&#xff0c;遭遇了经典的"PROJ 6 symbols…...

OpenTK 3.3.3实现3D旋转立方体:C# OpenGL入门实战

1. 为什么一个旋转立方体是3D图形编程真正的“Hello World” 很多人第一次接触OpenGL或现代图形API时&#xff0c;总想直接上手做粒子系统、PBR渲染或者实时阴影——结果卡在顶点缓冲对象&#xff08;VBO&#xff09;绑定失败、着色器编译报错、甚至窗口根本没显示出来。我带过…...

Unity Cinemachine相机系统深度使用:除了自动跟随,它的边界限制(Confiner)功能才是宝藏

Unity Cinemachine Confiner&#xff1a;解锁专业级镜头边界控制的实战指南在游戏开发中&#xff0c;镜头控制往往是被低估的艺术。许多开发者对Cinemachine的印象停留在"智能跟随相机"层面&#xff0c;却不知道它的Confiner功能能够彻底改变游戏镜头的专业度。想象一…...

开源吉他谱编辑神器TuxGuitar:从新手到专业编曲的完整指南

开源吉他谱编辑神器TuxGuitar&#xff1a;从新手到专业编曲的完整指南 【免费下载链接】tuxguitar Open source guitar tablature editor 项目地址: https://gitcode.com/gh_mirrors/tu/tuxguitar 想要免费创作专业的吉他乐谱吗&#xff1f;TuxGuitar这款开源吉他谱编辑…...

学习课程学习报告

本周主要学习了深度学习的基础理论&#xff0c;包括深度学习的数学本质、激活函数、前向传播与反向传播的原理。重点理解了非线性激活函数对模型表达能力的作用&#xff0c;掌握了前向传播的矩阵表示&#xff0c;并推导了反向传播的梯度计算过程&#xff0c;为后续神经网络训练…...

终极指南:3步免费搞定Android Studio中文界面,开发效率提升50%!

终极指南&#xff1a;3步免费搞定Android Studio中文界面&#xff0c;开发效率提升50%&#xff01; 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseL…...

基于可解释机器学习的心电图预测胸片异常:技术原理与临床实践

1. 项目概述&#xff1a;当心电图“看见”胸片在急诊室或者基层医疗点&#xff0c;一个呼吸急促、胸痛的患者被送来&#xff0c;临床医生面临的首要决策往往是&#xff1a;是否需要立刻安排胸部X光检查&#xff1f;胸片是评估心肺和胸腔状况的基石&#xff0c;但它需要设备、技…...