基础数据结构——数组

news2024/12/24 11:14:43

目录

一、前言

二、一维数组

1、定义和初始化

2、一维变长数组

3、一维正向遍历

4、一维反向遍历

5、一维数组区间操作、一维数组从 a[1] 开始,读入一维数组

6、一维数组例题1

7、一维数组例题2 

三、二维数组 

1、二维数组初始化

2、三维数组初始化

3、例题


一、前言

从这一篇文章开始,后面会讲一些数据结构和算法,这篇文章我们先来看看“数组”。

什么是数据结构?

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

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

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

基础数据结构

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

数组是最简单的数据结构,其把数据连续存储在空间中。

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

二、一维数组

1、定义和初始化

>>> a=['']*10;print(a)
['', '', '', '', '', '', '', '', '', '']
>>> b=[0]*10; print(b)
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>> c=[0 for i in range(10)];  print(c)
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>> d=[i for i in range(1,10)];  print(d)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>

2、一维变长数组

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

>>> print(a)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> 

3、一维正向遍历

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

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

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

4、一维反向遍历

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

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

5、一维数组区间操作、一维数组从 a[1] 开始,读入一维数组

比较简单,不再赘述

6、一维数组例题1

选数异或  2022年第十三届省赛,lanqiao0J 题号 2081

时间限制:1 s     内存限制:256 MB

【问题描述】

给定一个长度为n的数列 A1, A2, ...,An 和一个非负整数 x,给定 m 次查询,每次询问能否从某个区间 [l, r] 中选择两个数使得他们的异或等于 x。

【输入格式】

输入的第一行包含三个整数 n, m, x。第二行包含 n 个整数 A1, A2, ..., An。接下来 m 行,每行包含两个整数 li, ri 表示询问区间 [li, ri]。

【输出格式】

对于每个询问,如果该区间内存在两个数的异或为 x 则输出 yes,否则输出 no。

【评测用例规模与约定】

对于20%的评测用例,1<=n,m<=100;

对于40%的评测用例,1<=n,m<=1000;

对于所有评测用例,1<=n,m<=100000,0<=x<220,1<=li<=ri<=n,0<=Ai<220

暴力法

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

7、一维数组例题2 

区间修改、区间求和  lanqiao0J 题号 1133

【题目描述】

给定一个长度为 n 的数组,其初值分别为 a1, a2,.., an。有Q个操作,操作有两种:

1 l r k,将区间 a1+1, ... , ar 的值加上k。

2 l r,求区间al, al+1 , ... , ar 的和是多少。

【输入描述】

输入第 1 行包含两个正整数 N,Q,分别表示数组 a 的长度和操作的个数。

第 2 行包含 N 个非负整数 a1,a2, ... , an,表示数组 a 元素的初值。

第 3 ~ Q-2 行每行表示一个操作,格式如题

【输出描述】

输出共 Q 行,每行包含一个整数,表示相应查询的答案。

三、二维数组 

1、二维数组初始化

>>> p=[[0 for i in range(5)]for j in range(2)]
>>> p=[[0]*5 for j in range(2)]
>>> 
s=[[1,2,3],[4,5,6]]
print(s)
for i in range(2):
    for j in range(3):
        print(s[i][j],end=' ')

2、三维数组初始化

>>> a=[[[0 for _ in range(2)] for __ in range(3)] for ___ in range(4)]
>>>

3、例题

都是一些输入,意义不大。

以上,基础数据结构——数组

祝好

 

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

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

相关文章

HTTP_day02

掘金地址 结合 小林 coding 当键入网址后&#xff0c;到网页显示&#xff0c;其间发生了什么 DNS 服务器 专门保存了 Web 服务器域名与 IP 的对应关系 域名用“.”分隔成多个单词&#xff0c;级别从左到右逐级升高&#xff0c;最右边的被称为“顶级域名” DNS 服务器是一个分…

聊聊Spring中最常用的11个扩展点

前言 我们一说到spring&#xff0c;可能第一个想到的是 IOC&#xff08;控制反转&#xff09; 和 AOP&#xff08;面向切面编程&#xff09;。 没错&#xff0c;它们是spring的基石&#xff0c;得益于它们的优秀设计&#xff0c;使得spring能够从众多优秀框架中脱颖而出。 除…

第三十六讲:神州无线AP胖AP模式配置与管理

胖AP(Fat AP)配置一个开放式WLAN非常方便&#xff0c;需要完成的操作包括有线和无线两部分的配置。有线部分即ethernet接口的配置&#xff0c;保证AP能够接入Internet,无线部分的配置包括关联WLAN与VLAN&#xff0c;广播SSID,启用VAP&#xff0c;若无其他DHCP服务器的话&#x…

业务状态实时监控预警,「告警配置」来帮您

腾讯云数据连接器iPaaS团队服务了各行各业的数百家客户后&#xff0c;发现许多企业有大量的自建应用/SaaS应用&#xff0c;却缺乏一套可靠灵活的告警系统。当相关的IT系统/资源调配出现故障后&#xff0c;往往是影响到业务系统被用户投诉后&#xff0c;技术人员才发现故障并展开…

【超详细】LightGBM介绍与应用

目录 1. LightGBM简介 2. LightGBM详细介绍 2.1 单边梯度抽样算法 2.2 直方图算法 2.3 互斥特征捆绑算法 2.4 基于最大深度的 Leaf-wise 的垂直生长算法&#xff08;带深度限制的 Leaf-wise 算法&#xff09; 2.5 类别特征最优分割 &#xff08;直接支持类别特征&#xf…

【自学Python】Windows安装Python

Windows安装Python Python下载 Python下载地址 https://www.python.org/Python下载 打开上面的链接&#xff0c;打开 Python 的下载页面&#xff0c;如下图所示&#xff1a; 我们把鼠标放到 Downloads 上&#xff0c;然后点击 Windows&#xff0c;此时界面如下图所示&#…

Docker简介

Docker官网链接&#xff1a; http://docker.p2hp.com/问题&#xff1a;我们开发的嵌入式项目基本是基于虚拟机下的ubuntu的&#xff0c;如果每一个项目要求的系统版本、库版本、交叉编译工具链等不一样&#xff0c;我们就需要为每一个项目安装一个对应的ubuntu&#xff0c;这既…

【Leetcode】111. 二叉树的最小深度

一、题目 1、题目描述 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明&#xff1a;叶子节点是指没有子节点的节点。 示例1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;2…

4.0、Linux-文件属性查看和修改学习

4.0、Linux-文件属性查看和修改学习 基本属性 Linux 系统是一种典型的多用户系统&#xff0c;不同的用户处于不同的地位&#xff0c;拥有不同的权限&#xff1b;为了保护系统的安全性&#xff0c;Linux 系统对不同的用户访问同一文件&#xff08;包括目录文件&#xff09;的权限…

Linux0基础入门,教你如何在Shell中使用正则表达式

正则表达式 在 shell 脚本中成功运用 sed 编辑器和 gawk 程序的关键在于熟练使用正则表达式。这可不是件简单的事&#xff0c;从大量数据中过滤出特定数据可能会&#xff08;而且经常会&#xff09;很复杂。本章将介绍如何在 sed 编辑器和 gawk 程序中创建正则表达式来过滤出需…

聚观早报 | 元旦机票预订量增长145%;小米集团副总裁崔宝秋离职

今日要闻&#xff1a;元旦跨境机票预订量增长145%&#xff1b;小米集团副总裁崔宝秋离职&#xff1b;抖音推出桌面端聊天软件&#xff1b;《阿凡达2》全球票房破14亿美元&#xff1b;苹果 A17 芯片要用 3nm 工艺元旦跨境机票预订量增长145% 1 月 2 日&#xff0c;各旅游平台发布…

小工具集锦,5款好用的良心软件

今天来给大家推荐5款良心软件,每款都是经过时间检验的精品,用起来让你的工作效率提升飞快&#xff0c;各个都让你觉得相见恨晚&#xff01; 1.高效截图——Snipaste 我曾经尝试过 FastStone Capture、ShareX 等多款截图软件&#xff0c;直到遇见 Snipaste 才画上句点。除了基…

“当不存在跨域问题,也解决了数据验证时,还出现:No ‘Access-Control-Allow-Origin‘,说存在跨域问题 ”的解决办法

不存在跨域问题&#xff0c;数据验证也弄好了&#xff0c;还出现下面的问题&#xff1a;Access to XMLHttpRequest at https://m.maizuo.com/gateway?cityId440100&pageNum1&pageSize10&type1&k7325551 from origin http://localhost:8080 has been blocked b…

OpenCv:直方图均衡化(HE),自适应直方图均衡化(AHE),限制对比度自适应直方图均衡化(CLAHE)

总结了使用Python OpenCv处理图像直方图均衡化(HE)&#xff0c;自适应直方图均衡化(AHE)&#xff0c;限制对比度自适应直方图均衡化(CLAHE)的方法。 目录直方图均衡化(HE)自适应直方图均衡化(AHE)限制对比度自适应直方图均衡化(CLAHE)代码测试结果场景1场景2直方图均衡化(HE) …

MySQL 体系结构

MySQL经典体系结构 MySQL连接: MySQL Protocol(MySQL协议) Socket (Unix Scoket)本地连接 比如:mysql -uroot -p123 -S /tmp/mysql.sock TCP/IP(远程连接) 比如:mysql -uroot -p123 -h 10.0.0.51 -P3306 API (应用程序、开发) Native API C、PHP、JDBC、ODBC、.NET、Pyth…

大数据资源整合分析平台_企业大数据管理软件_大数据资源整合管理系统

在现如今大数据时代下&#xff0c;很多公司拥有大量的数据信息&#xff0c;这些数据繁多并且复杂&#xff0c;对于不懂技术的人员来讲&#xff0c;无疑是巨大的难题&#xff0c;这些数据背后存在着巨大的价值&#xff0c;我们可以利用大数据的方式&#xff0c;来提高数据的使用…

戴尔灵越14电脑U盘重装系统方法分享

戴尔灵越14电脑U盘重装系统方法分享。一些用户的戴尔灵越14电脑在进行了系统升级之后&#xff0c;出现了系统不兼容的情况&#xff0c;导致自己的电脑桌面出现了蓝屏的情况。那么这个情况下我们怎么去将系统进行重装呢&#xff1f;一起来看看U盘重装系统的方法吧。 准备工作&am…

详解前端页面性能测试方案——开源工具Lighthouse

相信绝大多数测试同学对于前端页面的性能测试都是通过使用各个浏览器的开发者工具进行抓包来查看响应中各种请求、js和图片的响应时间&#xff0c;然后把发现慢的点进行截图&#xff0c;然后汇总给开发人员。今天给大家介绍一款工具&#xff0c;不仅可以对页面性能进行打分&…

同步、异步、单工、双工、半双工有啥不同

1-同步、异步通信 串行通信通常情况下分为同步和异步通信&#xff0c;同步通信需要同步时钟信号&#xff0c;而异步通信则是不需要同步时钟信号的。 同步通信&#xff1a;发送方发出数据后&#xff0c;等接收方发回响应以后才发下一个数据包的通讯方式。 异步通信&#xff1a;…

物联网架构实例—Ubuntu 安装RabbitMQ

1.安装前准备 1.1.更新apt-get源 apt-get update 1.2.erlang支持 rabbitMq需要erlang语言的支持&#xff0c;在安装rabbitMq之前需要安装erlang. apt-get install erlang-nox 1.3.查看erlang版本 erl 1.4.添加公钥 wget -O- https://www.rabbitmq.com/rabbitmq-release-…