数组基础知识
数组是存放在连续内存空间上的相同类型数据的集合。
数组的元素是不能删的,只能覆盖。
二分查找
题目简介:
解题代码:
左闭右闭区间
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
左闭右开区间
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循环的时候,发现结果输出不对,原因是for i in range(n): 这个过程种的 i 只用于循环,-1的操作并不会对遍历中的 i 产生任何影响。
快慢指针:
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