【数据结构】 数组 array

news2024/9/21 4:34:33

一、什么是数组

连续内存空间,存储的一组相同类型的元素

二、常用操作

1.原理

access:通过索引直接读取元素的值

时间复杂度:O(1)

 search:遍历查找某个元素

时间复杂度:O(N)

insert:插入位置后的元素依次后移,空出插入空间,插入新元素 

时间复杂度:O(N)

delete:删除指定位置元素,后面的元素依次向前补位

时间复杂度:O(N)

2.实现

#创建空list,控制每个元素类型相同
a=[]

#添加元素
a.append(1)
a.append(2)
a.append(3)

print(a)
#[1,2,3]

#insert,O(n)
a.insert(2,99)

#access
print(a[2])
#99

#update
a[2]=88
print(a)
#[1,2,88,3]

#delete
a.remove(88) #O(N)
a.pop(1) #delete a[1],O(N)
a.pop() #delete last,O(1)
print(a)
#[1]

#get array size
print(len(a))
#1

#iterate array, O(N)
for i in a:
    print(i) #1
for index, e in enumerate(a):
    print(index,e) #0,1
for i in range(0,len(a)):
    print(i,a[i]) #0,1

#find index
print(a.index(1))
#0

#sort an array
a.sort
a.sort(reverse=True)

Leetcode练习

1056.易混淆数

给定一个数字 N,当它满足以下条件的时候返回 true

原数字旋转 180° 以后可以得到新的数字。

如 0, 1, 6, 8, 9 旋转 180° 以后,得到了新的数字 0, 1, 9, 8, 6 。

2, 3, 4, 5, 7 旋转 180° 后,得到的不是数字。

易混淆数 (confusing number) 在旋转180°以后,可以得到和原来不同的数,且新数字的每一位都是有效的。

class Solution(object):
    def confusingNumber(self, n):
        #index:0,1,2,3,4,5,6,7,8,9
        con_arr=[0,1,-1,-1,-1,-1,9,-1,8,6]
        digit_list = [int(d) for d in str(n)]
        n_len=len(digit_list)
        renum=['']*n_len
        #inerate num
        for i in range(0,n_len):
            if con_arr[digit_list[i]] !=-1:
                renum[n_len-1-i]=con_arr[digit_list[i]]
            else: 
                return False
        res = int(''.join(str(d) for d in renum))
        if res == n:
            return False
        return True

1427. 字符串的左右移

给定一个包含小写英文字母的字符串 s 以及一个矩阵 shift,其中 shift[i] = [direction, amount]

  • direction 可以为 0 (表示左移)或 1 (表示右移)。
  • amount 表示 s 左右移的位数。
  • 左移 1 位表示移除 s 的第一个字符,并将该字符插入到 s 的结尾。
  • 类似地,右移 1 位表示移除 s 的最后一个字符,并将该字符插入到 s 的开头。

对这个字符串进行所有操作后,返回最终结果。

class Solution(object):
    def stringShift(self, s, shift):
        """
        :type s: str
        :type shift: List[List[int]]
        :rtype: str
        """
        s_len=len(s)
        res_s=['']*s_len
        if s_len ==1:
            return s
        for sl in shift:
            if sl[1]>s_len: sl[1]= sl[1]%s_len
            #left: index before amount move to last, left move forward
            if sl[0] ==0:
                for i in range(0,s_len):
                    if i<sl[1]:
                        res_s[s_len-sl[1]+i]=s[i]
                    else:
                        res_s[i-sl[1]]=s[i]
            #right: index after len-1-amount move to begin, left move backward
            else:
                pos=s_len-sl[1]
                for j in range(0,s_len):
                    if j<pos:
                        res_s[j+sl[1]]=s[j]
                    else:
                        res_s[sl[1]-(s_len-j)]=s[j]
            s=''.join(res_s)
        return ''.join(res_s)

 

总结

数组适合多读少写操作

其他相关Leetcode习题:485,283,27

参考:手把手带你刷Leetcode力扣|各个击破数据结构和算法|大厂面试必备技能【已完结

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

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

相关文章

Generative AI 新世界 | 大语言模型(LLMs)在 Amazon SageMaker 上的动手实践

在上一篇《Generative AI 新世界&#xff1a;大型语言模型&#xff08;LLMs&#xff09;概述》中&#xff0c;我们一起探讨了大型语言模型的发展历史、语料来源、数据预处理流程策略、训练使用的网络架构、最新研究方向分析&#xff08;Amazon Titan、LLaMA、PaLM-E 等&#xf…

QT超市管理系统

QT超市管理系统 前言QT介绍.pro文件主文件&#xff08;main函数&#xff09;窗口函数&#xff08;mainwindow&#xff09;用户登录&#xff08;user_login&#xff09;超市系统数据库&#xff08;maketsql&#xff09;超市商品的增删改查(dlg_addmak)收款码界面(picture)结语 前…

亚马逊云科技探路可持续,数智创未来

气候变化是全人类的共同挑战。应对气候变化&#xff0c;事关永续发展&#xff0c;关乎人类前途命运。2020年中国在联合国大会上亚马逊云科技作出庄严承诺&#xff0c;要在2030年实现碳达峰&#xff0c;2060年实现碳中和&#xff0c;这是个全球性的规划&#xff0c;也是个庄严的…

Yolov8轻量化:MobileNetV3,轻量级骨架首选

1.轻量化网络简介 轻量化网络是指在保持模型性能的前提下,尽可能减小模型参数量和计算量的神经网络。这种网络通常被用于在移动设备等资源受限的场景中部署,以提高模型的实时性和运行效率。 轻量化网络的设计思路可以包括以下几个方面: 去除冗余层和参数:通过剪枝、蒸馏等技…

MFC(五)菜单栏和工具栏

这篇文章我们来完成菜单设计和工具栏设计 菜单设计 1.点开资源视图>Menu>IDR_MAINFRAME 通过IDR_MAINFRAME我们可以编辑该资源定义&#xff0c;包括主菜单、其他菜单、工具栏等内容&#xff0c;IDR_MAINFRAME即为默认的主窗口的资源标识符 2.右键相应菜单>新插入&…

数据结构 --- 红黑树

红黑树也是一种自平衡的二叉搜索树&#xff0c;和AVL树比较&#xff0c;插入和删除时&#xff0c;旋转的次数更少。 红黑树的特性&#xff1a; 所有节点都有颜色&#xff1a;红色或者黑色所有null均视为黑色红色节点不能相邻根节点是黑色从根节点到任意一个叶子节点&#xff…

5分钟带你了解,SAS硬盘和SATA硬盘的区别?

一、SAS和SATA的关系 SAS的接口技术可以向下兼容SATA。具体来说&#xff0c;二者的兼容性主要体现在物理层和协议层的兼容。 在物理层&#xff0c;SAS接口和SATA接口完全兼容&#xff0c;SATA硬盘可以直接使用在SAS的环境中&#xff0c;从接口标准上而言&#xff0c;SATA是SAS的…

接口隔离原则:接口里的方法,你都用得到吗?

文章目录 前言接口隔离原则1、角色的合理划分2、定制服务3、接口污染 胖接口减肥总结 前言 在前面几篇文章中中&#xff0c;我们讲的设计原则基本上都是关于如何设计一个类。SRP 告诉我们&#xff0c;一个类的变化来源应该是单一的&#xff1b;OCP 说&#xff0c;不要随意修改…

Fiddler抓包工具之fiddler设置断点和简单的并发测试

断点有两种方式&#xff1a; 1、全局断点 2、局部断点 全局断点 全局断点的特点是&#xff1a;不能针对一个请求&#xff0c;是给所有抓到的请求打断点 全局断点如何设置&#xff1a; 1、快速设置断点&#xff1a;直接点击底部状态栏断点处 &#xff1b;点击第一下是请求…

比赛记录:Educational Codeforces Round 149 (Rated for Div. 2) A~D

传送门:CF 前提提要:这场狠狠的掉分.C题刚开始少了一个特判,导致自己对自己的构造方法产生了疑问,然后就一直在做无用思考,后来交的时候排名就贼后面,然后D题的题面简直稀烂(虽然D题看懂之后极其简单…),赛时根本看不懂D题意,最终rating掉完.不亏是教育场,被狠狠的教育了 A题…

Web的基本漏洞--命令执行漏洞

目录 一、命令执行漏洞 1.命令执行漏洞的原理 2.命令执行漏洞分类 3.命令执行漏洞的危害 4.命令执行漏洞的防范措施 5.命令执行漏洞的绕过 一、命令执行漏洞 命令执行漏洞是指攻击者可以随意执行系统命令。它属于高危漏洞之一&#xff0c;也属于代码执行的范畴。命令执行…

内置工具横向移动

IPCSchtasks IPC: IPC$是共享"命令管道"的资源&#xff0c;它是为了让进程通信而开放的命名管道&#xff0c;连接双方可以建立安全的通道并以此通道进行加密数据交换&#xff0c;从而实现对远程计算机的访问。 利用条件&#xff1a; 1、开放139、445 2、目标开启…

Node.js V10.24.1 安装步骤(node、cnpm、yarn、vue)

一、下载node.js 下载地址&#xff1a;Download | Node.js 要下载历史低版本请点击“Previous Releases” Previous Releases 本文章以V10.24.1为例 &#xff0c;下载64位msi 二、安装 下载完成后&#xff0c;一直点击Next直到安装完成&#xff0c;可以自己修改安装位置。…

09.二叉树

09.二叉树 1.树型结构 1.1概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。它具有以下的特点&…

收到字节offer,我却拒绝了...

前言&#xff1a; 大四快毕业了&#xff0c;在等待读研的期间无事可做&#xff0c;所以打算暑期找个实习。 忠告&#xff1a; 本人投了字节某测试岗&#xff0c;看到要求是测开的要求&#xff08;科班出身需要熟悉一种语言&#xff09;&#xff0c;就以为面完发技术岗的offe…

note注解

元注解 注解在注解上面的注解称为元注解。主要有以下五种。 Retention 表明注解存活时间 Documented 将注解元素放到Javadoc文档中 Target 注解可以使用到的地方 在ElementType[]中主要有以下几种类型 TYPE&#xff1a;类型&#xff08;比如类、注解、枚举&#xff09; FIELD&…

Refresh解析

目录 后置处理器PostProcessor PostProcessor的种类 Aware 事件监听模式 Spring容器的刷新逻辑 ApplicationContext refresh的流程概述 1---prepareRefresh 2---obtainFreshBeanFactory 3---prepareBeanFactory 4---postProcessBeanFactory 5---invokeBeanFactoryPo…

【正点原子STM32连载】 第二十一章 通用定时器实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第二十…

海康萤石摄像头本地局域网拉流保存

海康萤石的视频cp1型号&#xff0c;获取局域网的视频流&#xff1a;rtsp 拉流方法 首先需要在软件中打开rtsp开关&#xff0c;然后使用nmap工具测试下摄像头开放的端口号&#xff0c;一定会有一个554端口开放 $ nmap 192.168.0.105 PORT STATE SERVICE 554/tcp open r…

什么是Flink CDC,以及如何使用

什么是Flink CDC&#xff0c;以及如何使用 CDC介绍Flink CDC适用于场景&#xff1f;Flink CDC 的简单用例数据库配置创建数据库和相应的表开启mysql数据库bin-log日志1.如果是服务器2.如果在Windows使用小皮 搭建Flink CDC java环境添加maven相关pom构建Sinkmain配置运行 操作数…