数据结构概念与数组知识点

1.1数据结构

 

1.1.1数据结构的定义

 

(1)数据:是描述客观事物的数、字符以及所有能输入到计算机中并被计算机程序处理的符号的集合。

 

         数据元素:是数据的基本单位,在计算机中通常作为整体处理

 

         数据项:是具有独立含义的数据最小单位,也称为成员或域

 

(2)数据结构:是指所涉及的数据元素以及数据元素之间的关系,可以看作是相互之间存在着特定关系的数据元素的集合。(是相互之间存在一种或多种特定关系的数据元素的集合)

 

 数据结构  =  数据对象  +  结构

 

1.1.2数据结构

 

(1)集合结构:数据元素之间的关系是“属于同一个集合 ”

 

(2)线性结构:数据元素之间存在一对一的关系

 

         i)线性结构又分为顺序和链表两种结构(根据存储方式划分)

 

         ii)顺序:是把逻辑上相邻的元素存储在物理位置相邻的存储单元中

 

              链表:对逻辑上相邻元素不要求其物理位置相邻,元素间的逻辑方式通过指示元素存储地址的指针来表示

 

(3)树形结构:数据元素之间存在一对多的关系

 

(4)图形结构:数据元素之间存在着多对一的关系(该结构也称为网状结构)

 

2.1数组

 

2.1.1数组的概念

 

(1)定义方式:数据类型 数组名【数组长度】

 

(2)定义:数组是n(n>1)个相同类型的数据元素所构成的有限序列

 

(3)数组只能覆盖

 

2.1.2数组的基本操作

 

(1)二分查找:又称折半查找,是一种效率极高的查找方法。该方法要求顺序表中的元素是有序的,即表中元素按关键字有序,假设有序顺序表中的元素是递增有序的

 

(2)移动元素

  i)原地移除

 

              a)暴力解法

class Solution:

  def removeElement(self,nums:List[int],val:int)->int:

    i,l = 0,len(nums)

    while i < l:

      if num[i] == val:

        for j in range(i+1,l):

          nums[j - 1]=nums[j]

        l-=1

        i-=1

    return l

   b)快慢指针法

class Solution:
   def removeElement(self,nums:List[int],val:int)->int:
     fast=0
     slow=0
     size=len(nums)
     while fast<size:
       if nums[fast]!=val:
          nums[slow]=nums[fast]
          slow+=1
          fast+=1
return slow

2.1.3有序数组的平方

 

 

eg:给你一个按非递减顺序排序的整数数组,返回每个数字的平方组成新的数组,要求也按非递减顺序排列

 

              a)暴力拆解法 

 

              b)快慢指针法

 

              c)滑动窗口法

class Solution:

    def nminSubArrayLen(self,s,nums):

    l = len(nums)

    left = 0

    right = 0

    min_len = float('int')

    cur_sum = 0

    while right < 1:

        cur_sum += nums[right]

        while cur_sum >= s:

            min_len = min(min_len,right - left + 1)

            cur_sum -= nums[left]

            left += 1

        right += 1

    return min_len if min_len != float('int')else 0

2.2.1小练习

 

力扣977 “有序数组的平方”

 

要求给定一个按非递减顺序排序的整数数组 nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。

力扣209题 “长度最小的子数组”

 

要求给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。 

 

力扣904题 “水果成篮”

 

要求给定一个二维数组 grid,其中每个值代表一个水果类型。目标是找到包含至少一个水果的每个水果类型的行数的最大值。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2301_80658062

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值