Gsupl.落浅~zbxGsupl.落浅~

10:52:08 AM

哥伦布

数据结构—数组

Gsupl.落浅·2024-09-08 18:50·22 次阅读

数据结构—数组

一;数组

1、数组:在连续的内存空间当中;存储一组相同类型的元素

2、元素和索引:数组的索引下标从0开始

3、数组的访问和数组的搜索

(1)数组的访问

Copy
a=[1,2,3] a[1]=2#数组的访问;通过下标索引进行访问

(2)数组的搜索

Copy
a=[1,2,3] for i in a: print(i)

4、数组的四种方法

访问 0(1)

搜索 0(n)

插入 o(n) :数组元素向前移动

删除o(n):数组元素向后移动

6、优缺点

适合读取操作;但是不适合写的操作!

Copy
#数组元素的常用操作 #创建数组 array=[1,2,3,4,5] #添加元素 array.append(6)#添加单个元素 arrayay.extend([7,8]) #访问元素 array[0]#使用下表索引访问数组元素 #修改元素 array[0] = 10 # 修改第一个元素的值 #删除元素 del array[0]#删除第一个元素的值 array.remove(5)#删除值为5的元素 #遍历数组 for i in array: print(i) #查看元素 if 3 in array: print("在数组当中") #数组的长度 print(len(array)) #数组的排序 array.sort()#升序排序 array.sort(reverse=True) # 降序排序

二:LeetCode -数组

题目485 最大连续1的个数

(1)思路:使用双指针;一个记录最大连续的个数;一个记录当前连续一的个数;最后输出max_count

Copy
class Solution: def findMaxConsecutiveOnes(self, nums) -> int: max_count=0 count=0 for i in range(len(nums)): if nums[i]==1: count+=1 max_count=max(max_count,count) else: count=0 return max_count nums = [1,0,1,1,0,1] solution=Solution() print(solution.findMaxConsecutiveOnes(nums))

题目283:移动零

(1)思路:题目要求原地移动;就不能创建新的容器;所以定义一个指针;将不是1的元素移到首部;然后将剩下的元素填充为0;输出nums

Copy
class Solution: def moveZeroes(self, nums) -> None: k=0 for i in range(len(nums)): if nums[i]!=0: nums[k]=nums[i] k+=1 for i in range(k,len(nums)): nums[i]=0 return nums nums = [0,1,0,3,12] solution=Solution() print(solution.moveZeroes(nums))

题目27:移除元素

(1)思路:定义一个指针;记录不等于目标值的元素;然后讲元素放到数组的首部;然后输出

Copy
class Solution: def removeElement(self, nums, val) -> int: k = 0 for i in range(len(nums)): if nums[i] != val: nums[k] = nums[i] k += 1 return k nums = [3, 2, 2, 3] val = 3 solution = Solution() k = solution.removeElement(nums, val) print(f"{k},{nums[:k]}")

题目28:查找特定位置

(1)判断数组元素是否和目标值相等;如果相等的话添加到新的容器当中;然后判断新的列表是否为空;不为空输出第一个和最后一个和目标值相等的元素

Copy
class Solution: def searchRange(self, nums, target): list = [] for i in range(len(nums)): if nums[i] == target: list.append(i) if not list: return [-1, -1] return [list[0], list[-1]] nums = [5, 7, 7, 8, 8, 10] target = 8 solution = Solution() print(solution.searchRange(nums, target))

题目136:只出现一次的数

(1)简单的异或

Copy
def func(nums): key=0 for i in range(len(nums)): key ^=nums[i] return key nums = [4,1,2,1,2] flag = func(nums) print(flag,end="")

题目1:两数和

(1)思路:使用双指针暴力解法;或者使用哈希表也可以实现

Copy
class Solution: def func(self,nums,target): for i in range(len(nums)): for j in range(i+1,len(nums)): if nums[i]+nums[j]==target: return [i,j] return "" nums = [2,7,11,15] target = 9 solution=Solution() print(solution.func(nums,target))
posted @   Gsupl.落浅~  阅读(23)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示

目录导航

一;数组
二:LeetCode -数组