數(shù)組基礎(chǔ)知識(shí)
數(shù)組是存放在連續(xù)內(nèi)存空間上的相同類型數(shù)據(jù)的集合枯冈。
數(shù)組的元素是不能刪的,只能覆蓋办悟。
二分查找
題目簡介:
解題代碼:
左閉右閉區(qū)間
class Solution(object):
def search(self, nums, target):
left = 0
right = len(nums) - 1
while left <= right:
middle = (left + right) // 2
if nums[middle] == target:
return middle
if nums[middle] > target:
right = middle - 1
if nums[middle] < target:
left = middle + 1
return -1
左閉右開區(qū)間
class Solution(object):
def search(self, nums, target):
left = 0
right = len(nums)
while left < right:
middle = (left + right) // 2
if nums[middle] == target:
return middle
if nums[middle] > target:
right = middle
if nums[middle] < target:
left = middle + 1
return -1
移除元素
題目簡介:
解題代碼:
暴力解法:
class Solution(object):
def removeElement(self, nums, val):
n = len(nums)
i = 0
while i < n:
if nums[i] == val:
for j in range(i + 1, n):
nums[j - 1] = nums[j]
i -= 1
n -= 1
i += 1
return n
注意:遍歷過程中遇到的問題:第一次沒有使用while尘奏,使用for循環(huán)的時(shí)候,發(fā)現(xiàn)結(jié)果輸出不對(duì)誉尖,原因是for i in range(n): 這個(gè)過程種的 i 只用于循環(huán)罪既,-1的操作并不會(huì)對(duì)遍歷中的 i 產(chǎn)生任何影響。
快慢指針:
class Solution(object):
def removeElement(self, nums, val):
fast, slow = 0, 0
while fast < len(nums):
if nums[fast] != val:
nums[slow] = nums[fast]
slow += 1
fast += 1
return slow