码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-06-19 14:21:30      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:ase   sort   数据结构   search   code   tco   标识   存储   ack   

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 数据结构 探索数组和字符串

标签:ase   sort   数据结构   search   code   tco   标识   存储   ack   

原文地址:https://www.cnblogs.com/yijierui/p/13162553.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!