蓝桥杯备赛Day3——基础数据结构(一维数组)

news2024/11/20 11:35:13

目录

数据结构

什么是数据结构?

《数据结构》教材一般包含

基础数据结构

最简单的数据结构——一维数组

一维数组的定义

一维变长数组

一维正向遍历

一维反向遍历

 一维数组区间操作(实际上就是切片操作)

一维数组从a[1]开始赋值

一维数组的读入(一)

一维数组的读入(二)

一维数组的读入(三)

例题


数据结构

什么是数据结构?

        每道编程题都有输入数据和输出数据,输入数据是代码处理的对象,输出数据是代码运行的结果。代码在执行过程中需要用一定的方式来存储、处理数据,就是数据结构。

《数据结构》教材一般包含

        线性表(数组、链表〉、栈和队列、串、多维数组和广义表、哈希、树和二叉树、图、排序等。


基础数据结构

        数组、链表、队列、栈、二叉树。

最简单的数据结构——一维数组

数组
定义:把数据连续存储在空间中。
虽然简单,但是在竞赛中至关重要,因为其他数据结构都可以用数组来模拟,即“物理存储上是数组,逻辑上是其他数据结构”。
用数组模拟其他数据结构,不是工程项目的正规做法,但是非常适合算法竟赛,因为这样编码快、不易出错。
 

一维数组的定义

a=['']*10                #生成空数组
print(a)
b=[0]*10                 #生成以0填充的数组
print(b)
c=[0 for i in range(10)]    #使用循环用0填充数组
print(c)
d=[i for i in range(0,10)]    #使用循环用i填充数组
print(d)

['', '', '', '', '', '', '', '', '', '']
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Process finished with exit code 0

一维变长数组

a=[1]
for i in range(2,10):
    a.append(i)
print(a)

[1, 2, 3, 4, 5, 6, 7, 8, 9]
Process finished with exit code 0

一维正向遍历

#方法一:通过数组内元素遍历
s=[0,1,2,3,4,5,6,7,8,9]
for i in s:
    print(i,end=' ')

0 1 2 3 4 5 6 7 8 9 
Process finished with exit code 0

#方法二:通过数字索引借助数组长度进行遍历
s=[0,1,2,3,4,5,6,7,8,9]
for i in range(0,len(s)):
    print(s[i],end=' ')

0 1 2 3 4 5 6 7 8 9 
Process finished with exit code 0

#方法三
s=['0','1','2','3','4']*2
for i in s:
    print(int(i),end=' ')

0 1 2 3 4 0 1 2 3 4 
Process finished with exit code 0

一维反向遍历

s=[0,1,2,3,4,5,6,7,8,9]
for i in range(len(s)-1,-1,-1):
    print(s[i])

s=[0,1,2,3,4,5,6,7,8,9]
for i in s[::-1]:
    print(i)


9
8
7
6
5
4
3
2
1
0
Process finished with exit code 0

 一维数组区间操作(实际上就是切片操作)

a=[1,2,3,4,5,6,7]
print(min(a[:]))
print(min(a[2:5]))
print(max(a[2:5]))
print(max(a[2:-1]))
print(sum(a[:]))

一维数组从a[1]开始赋值

a=[0]+list(map(int,input().split()))    #从a[1]开始赋值

可以再单独给a[0]赋值为0

一维数组的读入(一)

付账问题2018年第九届蓝桥杯省赛,lanqiaoOJ题号174【样例输入】
10 30
21 4 7 4 8 3 6 4 7

这里我们仅考虑如何读入题目所给数据,不考虑该题如何求解

#熟练使用map函数和split函数进行赋值十分重要
n,s=map(int,input().split())
a=list(map(int,input().split()))
for i in range(n):
    print(a[i],end=' ')

in:
10 30
2 1 4 7 4 8 3 6 4 7
out:
2 1 4 7 4 8 3 6 4 7 
Process finished with exit code 0

一维数组的读入(二)

求和2022年第十三届蓝桥杯省赛,lanqiaoOJ题号2080第4章【输入格式】第一行包含一个整数n,第二行包含n个整数a1, a2,-",an。

n=int(input())        #读n
a=[0]+[int(i) for i in input().split()]    #读入a[1]~a[n],不使用a[0]

假如本题干中:"第二行包含n个整数a0,a2,...,an",则可以按如下方式写
n=int(input())    #读n
a=[int(i) for i in input().split()]    #读a[]

一维数组的读入(三)

统计数字lanqiao0J题号535

【输入描述】
第1行是整数n,表示自然数的个数。第2~n+1行每行一个自然数。其中,1小于等于n小于等于2*10^5,每个数均不超过1.5×10^9。

输入样例

8

2

4

2

4

5

100

2

100

n=int(input())
nums=[]
for i in range(n):
    nums.append(int(input()))    #读n行的数字


例题

注意此处使用一维数组只能获得一部分分数,想要获得全部分数需要使用线段树。

 暴力法
对每个区间查询,验算区间内的任意两个数,复杂度0(n^2),共m个查询,总复杂度0(mn2),只能通过20%的测试。
100%的解法见“第25讲线段树”

n,m,x=map(int,input().split())
a=[0]+list(input().split())    #这里需要再加一个a[0],从a[1]开始
pos=[0]*(n+10)
pos[n+1]=1<<30
mp={}
for i in range(n,0,-1):
    a[i]=int(a[i])
    mp=[a[i]]=i
    y=x^a[i]
    pos[i]=pos[i+1]
    if mp.get(y): pos[i]=min(pos[i],mp[y])    #注意字典的使用方法
for i in range(m):
    L,R=map(int,input().split())
    if pos[L]<=R:    print('yes')
    else:    print('no')
    

 暴力求解

n,m=map(int,input().split())
a=[0]+list(map(int,input().split()))
for i in range(m):
    w=list(map(int,input().split()))
    if len(w)==3:        #区间询问:[L,R]的区间和
        q,L,R=w
        print(sum(a[L:R+1]))
    else:                #区间修改:把[L,R]的每个元素加上d
        q,L,R,d=w
        for i in range(L,R+1):
            a[i]+=d

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

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

相关文章

热门项目披露:四川超声印制板有限公司100%股权转让

热门项目披露&#xff1a;四川超声印制板有限公司100%股权转让 项目推荐指数&#xff1a;&#xff1b;该项目由 北京产权交易所 发布&#xff0c;于2022年12月11日被塔米狗平台收录。 项目方 四川超声印制板有限公司&#xff0c; 成立于 1998年7月5日 &#xff0c; 注册资金 2…

Unity 3D Hierarchy 视图 || Unity 3D Project 视图

Unity 3D 的 Hierarchy 视图包含了每一个当前场景的所有游戏对象&#xff08; GameObject &#xff09;&#xff0c;如下图所示。 其中一些是资源文件的实例&#xff0c;如 3D 模型和其他预制物体&#xff08; Prefab &#xff09;的实例&#xff0c;可以在 Hierarchy 视图中选…

Mac 截图工具 iShot Pro - 软件介绍、下载安装详细教程

Mac 截图工具 iShot Pro -软件介绍、下载安装详细教程 iShot -优秀&#xff0c;功能齐全的区域截图&#xff0c;窗口截图&#xff0c;多窗口截图&#xff0c;长屏幕截图&#xff0c;shell截图&#xff0c;时间间隔截图&#xff0c;快速注释&#xff0c;纹理&#xff0c;颜色匹配…

虚拟专用网VPN(计算机网络-网络层)

目录 专用网络与专用地址 RFC 1918指明的专用地址 互连两个地点的专用网络 虚拟专用网VPN (Virtual Private Network) IP 隧道技术 VPN 的要点 专用网络与专用地址 世界上有很多机构有自己独立的网络&#xff0c;这些网络并不与因特网 互连&#xff0c;为该机构所专有&…

【LeetCode】有效的数独 [M](模拟)

36. 有效的数独 - 力扣&#xff08;LeetCode&#xff09; 一、题目 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔…

国产CAE的涅槃-岩土行业高性能离散元软件MatDEM

作者 | 刘春博士 一、导读 2019年9月11日&#xff0c;ANSYS公司公开宣称&#xff1a;“收购LSTC公司&#xff0c;一举获得其旗下拥有LS-DYNA&#xff08;结构&流体&电磁的多物理场求解器&#xff09;、LS-PrePost&#xff08;前后处理器&#xff09;、LS-OPT/LS-TASC…

基于Web的文件管理系统,支持Office、WPS预览/编辑、在线解压缩、文件分享、文件加密、远程存储、远程文件推送、秒传、断点

基于Web的文件管理系统&#xff0c;支持权限管理、历史版本管理、Office预览/编辑、WPS预览/编辑、在线解压缩、文件分享、文件加密、远程存储、远程文件推送、秒传、断点续传、智能搜索、文件备注、本地自动备份、异地自动备份、一键迁移、集群部署。 主要应用场景&#xff1…

14_视图

1. 常见的数据库对象 对象描述表(TABLE)表是存储数据的逻辑单元&#xff0c;以行和列的形式存在&#xff0c;列就是字段&#xff0c;行就是记录数据字典就是系统表&#xff0c;存放数据库相关信息的表。系统表的数据通常由数据库系统维护&#xff0c;程序员通常不应该修改&…

STM32正点原子图片——显示实验

目录 一、图片显示部分 GIF piclib.c介绍 图像显示实验main.c介绍 二、SD卡模块 1、SD卡基础知识 2、SD卡读操作 3、SD卡写操作 一、图片显示部分 GIF GIF(Graphics Interchange Format)的原义是“图像互换格式”,是CompuServe公司在1987年开发的图像文件格式。GI…

敏捷价值流管理

对团队或企业来说&#xff0c;敏捷能够通过快速迭代、改进来更好地为客户或终端用户交付价值。但有些团队在引入敏捷项目管理模式之后&#xff0c;团队管理层看了看埋头工作的团队&#xff0c;“唉&#xff1f;团队的效率好像并没有提升啊&#xff0c;这不和以前一样吗……”在…

怎样给黑白照片上色?2个技能教你如何给黑白照片上色

大家看过长辈的黑白照片吗&#xff1f;最近我的爷爷翻出了几十年前的老照片&#xff0c;给我细细道来每张照片背后的故事。可惜那个年代的技术水平有限&#xff0c;没办法拍出好看的彩色照片。如今照片修复技术层层递进&#xff0c;我想借助一些图片处理软件&#xff0c;将这些…

Qt QCustomPlot 添加多个坐标系区域

Qt QCustomPlot 添加多个坐标系区域 文章目录Qt QCustomPlot 添加多个坐标系区域摘要1 新建多个坐标系QCPAxisQCPAxisRectQCPLayoutGrid2 多个坐标轴如何更新数据添加数据3 遇到的问题最后关键字&#xff1a; Debian、 Linux、 QCustomPlot、 Qt、 QCPAxisRect内容背景&#xf…

vue3的中间值思维

在用vue框架的开发的时候&#xff0c;经常使用到的一种中间值思维&#xff0c;什么是中间值思维&#xff0c;就是通过一个间接的属性去改变需要渲染的值 我们在传值的时候&#xff0c;如果是用的mitt传值&#xff0c;那传过来的值就是在bus.on函数中&#xff0c;我们就得取出来…

消息中间件RocketMQ快速入门

目录前言消息中间件需要解决哪些问题&#xff1f;Publish/SubscribeMessage PriorityMessage FilterBroker端消息过滤Consumer端消息过滤Message Persistence消息可靠性低延迟消息回溯消费消息堆积定时消息消息重试RocketMQ 物理部署结构RocketMQ 逻辑部署结构RocketMQ 数据存储…

Scala 基础函数

1.前言 为什么要学习Scala 分布式高并发语言Go、R、Erlang等等为何选择Scala&#xff1f; Spark是大数据处理的核心方式&#xff0c;用scala语言编写&#xff01; Kafka分布式发布订阅消息系统&#xff0c;由LinkedIn捐给Apache&#xff0c;以极高的吞吐量著称&#xff0c;是…

人工智能-seaborn单双多变量绘图、两案例:NBA球员数据分析、北京租房数据统

1、 seaborn 作用&#xff1a;更高效地绘图 #安装 pip3 install seaborn#导入 import seaborn as sns单变量&#xff1a;直方图或核密度曲线 双变量&#xff1a;散点图、二维直方图、 主要函数&#xff1a;distplot()与joinplot()函数 1.1 单变量绘图 API import seabor…

cookie, session,redis全解析

cookie session redis 一. 前言 最近在学习node的过程中对于cookie&#xff0c;session&#xff0c;redis有了和之前不一样的理解&#xff0c;记录一下之前不了解的知识点。二.cookie的重点概念 存储在客户端浏览器中的字符串&#xff0c;最大5kb跨域不共享&#xff0c;每一个…

限定城市|临床医生自费赴日本大阪公立大学医学院访学观摩

X医生拟自费访学&#xff0c;目标是日本大阪都市圈&#xff0c;包括大阪、京都、奈良、神户等&#xff0c;优先考虑大阪市及京都市。最终我们申请到大阪公立大学医学院&#xff0c;对方在一周内连续发来两封邀请函&#xff0c;以便于X医生办理护照及单位的审批手续。对于首次办…

Zabbix与乐维监控对比分析(五)——可视化篇

前面我们详细介绍了Zabbix与乐维监控的架构与性能、Agent管理、自动发现、权限管理、对象管理、告警管理方面的对比分析&#xff0c;相信大家对二者的对比分析有了相对深入的了解&#xff0c;接下来我们将对二者的可视化功能进行对比分析。可视化是当代IT监控的一个创举&#x…

java+ssh+mysql客户关系管理系统

项目介绍&#xff1a; 本系统为基于jspsshmysql的客户关系管理系统&#xff0c;系统实现了权限自动化&#xff0c;可以自由创建角色&#xff0c;并为每个角色赋予权限&#xff0c;全部功能如下&#xff1a; 1.我的桌面&#xff1a;列出了一些办公常用快捷方式 2.信息中心&am…