数据(二分查找及移除元素)

数组基础知识

数组是存放在连续内存空间上的相同类型数据的集合。
数组的元素是不能删的,只能覆盖。

二分查找

题目简介:



解题代码:
左闭右闭区间

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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容