數(shù)組是非?;A(chǔ)的數(shù)據(jù)結(jié)構(gòu)。
數(shù)組是存放在連續(xù)內(nèi)存空間上的相同類型數(shù)據(jù)的集合。
704 二分查找
題目:給定一個?n
?個元素有序的(升序)整型數(shù)組?nums
?和一個目標值?target
??,寫一個函數(shù)搜索?nums
?中的?target
,如果目標值存在返回下標,否則返回?-1
。
題目鏈接:. - 力扣(LeetCode)
1、在進行二分查找過程中,區(qū)間的定義非常的重要。
區(qū)間一般分為兩種:
- 左閉右閉
- 左閉右開
當進行左閉右閉的區(qū)間二分查找時,代碼如下:
class Solution(object):
def search(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
left = 0
right = len(nums) - 1
# 左閉右閉
while left <= right:
middle = (left + right) / 2
if nums[middle] < target:
left = middle + 1
elif nums[middle] > target:
right = middle - 1
else:
return middle
return -1
當進行左閉右開的區(qū)間二分查找時,代碼如下:
class Solution(object):
def search(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
left = 0
right = len(nums) - 1
# 左閉右開
while left < right:
middle = (left + right) / 2
if nums[middle] < target:
left = middle + 1
elif nums[middle] > target:
right = middle
else:
return middle
return -1
27 移除元素
題目:
給你一個數(shù)組?nums
?和一個值?val
,你需要?原地?移除所有數(shù)值等于?val
?的元素,并返回移除后數(shù)組的新長度。
不要使用額外的數(shù)組空間,你必須僅使用?O(1)
?額外空間并?原地?修改輸入數(shù)組。
元素的順序可以改變。你不需要考慮數(shù)組中超出新長度后面的元素。
鏈接:. - 力扣(LeetCode)
2、在數(shù)組中進行元素移除
雙指針思路(基本了解,還需要深入學習)文章來源:http://www.zghlxwxcb.cn/news/detail-546424.html
雙指針分為快指針和慢指針。快指針是為了找到不需要移除的元素,慢指針是為了找到數(shù)組更新的位置。文章來源地址http://www.zghlxwxcb.cn/news/detail-546424.html
class Solution(object):
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
slow = 0
for fast in range(len(nums)):
if nums[fast] != val:
nums[slow] = nums[fast]
slow = slow + 1
return slow
到了這里,關(guān)于代碼隨想錄Python:704. 二分查找,27. 移除元素的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!