leetcode 数据结构 探索数组和字符串

Posted jerrygogo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 数据结构 探索数组和字符串相关的知识,希望对你有一定的参考价值。

1、集合:由一个或多个确定的元素所构成的整体。集合里的元素类型不一定相同,集合里的元素没有顺序。

2、数组:数组会用一些名为 索引 的数字来标识每项数据在数组中的位置。数组中的元素在内存中是连续存储的,且每个元素占用相同大小的内存。对于数组,计算机会在内存中申请一段 连续 的空间,并且会记下索引为 0 处的内存地址。

3、数组的操作:(1)读取元素:通过数组的索引访问数组中的元素。索引其实就是内存地址,值得一提的是,计算机可以跳跃到任意的内存地址上,这就意味着只要计算出数组中元素的内存地址,则可以一步访问到数组中的元素。时间复杂度为 O(1)

                           (2)查找元素:   计算机只会保存数组中索引为 0 处元素的内存地址,因此当计算机想要知道数组中是否包含某个元素时,只能从索引 0 处开始,逐步向后查询。时间复杂度为 O(N),N 为数组的长度。

                           (3)插入元素:如果要将该元素插入到数组的末尾,只需要一步。即计算机通过数组的长度和位置计算出即将插入元素的内存地址,然后将该元素插入到指定位置即可。如果要将该元素插入到数组中的其他位置,则会有所区别,这时我们首先需要为该元素所要插入的位置腾出                                       空间,然后进行插入操作。

                          (4)删除元素:删除元素与插入元素的操作类似,当我们删除掉数组中的某个元素后,数组中会留下 空缺 的位置,而数组中的元素在内存中是连续的,这就使得后面的元素需对该位置进行 填补 操作。

数组练习题:(1)寻找数组的中心索引

def pivotIndex(nums):
    for i in range(len(nums)):
        if sum(nums[0:i])==sum(nums[i+1:]):
            return i
    else:
        return -1


nums=[1, 7, 3, 6, 5, 6]
print(pivotIndex(nums))
nums=[1, 2, 3]
print(pivotIndex(nums))

                  (2)给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置

def searchInsert(nums,target):
    for i in nums:
        if i==target:
            return nums.index(i)
        else:
            nums.append(target)
            return sorted(nums).index(target)


nums=[1,3,5,6]
target = 5
print(searchInsert(nums,target))
target =2
print(searchInsert(nums,target))

         

以上是关于leetcode 数据结构 探索数组和字符串的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 最长公共前缀(探索字节跳动)

Leetcode-探索 | 从排序数组中删除重复项

Leetcode-探索 | 两个数组的交集 II

Leetcode-探索 | 存在重复

Leetcode-探索 | 只出现一次的数字

leetcode 探索 查找表类算法