一:陣列操作
1、陣列:在連續的記憶體空間當中;儲存一組相同型別的元素
2、元素和索引:陣列的索引下標從0開始
3、陣列的訪問和陣列的搜尋
(1)陣列的訪問
a=[1,2,3]
a[1]=2#陣列的訪問;透過下標索引進行訪問
(2)陣列的搜尋
a=[1,2,3]
for i in a:
print(i)
4、陣列的四種方法
訪問 0(1)
搜尋 0(n)
插入 o(n) :陣列元素向前移動
刪除o(n):陣列元素向後移動
6、優缺點
適合讀取操作;但是不適合寫的操作!
#陣列元素的常用操作
#建立陣列
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的個數
題目:給定一個二進位制陣列nums;計算其中最大連續1的個數
陣列的遍歷;首先遍歷陣列的索引;然後根據陣列的索引訪問陣列的元素
定義兩個遍歷;一個記錄連續1的個數,一個記錄最大連續1的個數;使用判斷進行分析
def func(nums):
max_count = 0
current_count = 0
for num in nums:
if num==1:
current_count += 1
max_count = max(max_count, current_count)
else:
current_count = 0
return max_count
nums=[1,0,1,1,0,1]
print(func(nums))
題目283:移動零
首先使用for迴圈遍歷陣列;定義一個k記錄陣列下表索引;如果陣列元素不等於0;則移到第一個位置;以此類推;然後根據切片;將剩下的元素賦值為0
def func(nums):
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
nums = [0,1,0,3,12]
func(nums)
print(nums)
題目27:移除元素
典型的雙指標問題就是如果不相等的話就交換,然後k+1,最後返回k
def func(nums,val):
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
k=func(nums,val)
print(k)
題目28:查詢特定位置
比較簡單的的一個題目;就是首先使用for迴圈遍歷陣列;然後判斷是否和目標值相等
如果相等就返回當前的索引值;如果遍歷完了還沒有找到,就返回空列表[-1,-1]
def func(nums,target):
k=0
list=[]
for i in range(len(nums)):
if nums[i]==target:
list.append(i)
else:
return [-1,-1]
return list
nums = [5,7,7,8,8,10]
target = 6
key=func(nums,target)
print(key)
題目136:只出現一次的數
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="")