算法刷题-数组理论基础-leetcode-704. 二分查找,27. 移除元素(python)

本文介绍了如何在LeetCode中解决数组移除元素的问题,讨论了Python中常用的列表操作方法,并提出了针对特定情况的两种思路:替换和二分查找。特别关注了移除元素时的顺序无关性和特殊案例,如仅含目标值的数组处理。
摘要由CSDN通过智能技术生成

leetcode-27. 移除元素

背景:

  1. 题目要求:给nums【list】,val【int】。要求原地修改数组。
  2. 观察示例:删除所有val,最终return结果只关心count,nums前n个元素,顺序无关;即删除元素要么置0放末尾要么保持放最后

思路:

  1. 是否借助python函数方法:python的list常用方法有.append(x)/.insert(index,x)/.pop(index)/.remove(x)/.clear()/...但是.remove(x)是只能删除第一次出现的x(即存在多个时,只能删第一个)故remove可以组合while使用
  2. 要么覆盖:非val元素与val元素覆盖,但是如果处理相邻元素相同均为val和覆盖后,非val元素重复的情况?故放弃
  3. 要么置换:把val元素全部置换至末尾,l=0,r=len(nums)-1;第一种情况:nums[i]==val,nums[r]!=val;nums[i]==val,nums[r]==val则移位r=r-1,如果r-1位还是val,r继续移动;第二种情况:nums[l]!=val,不关心r,直接l往后移动

方法:

尝试实践思路1

尝试实践思路3,发现return的是数组的长度即len(nums)-count,但是存在特殊情况,就是如果数组只有一个元素val,也要删除

实践:

复盘:

数组问题,熟悉常用函数的方法,优先考虑调用方法实现

——————————————————————————————————————————

leetcode-27. 移除元素

背景:

  1. 题目要求:给nums【list】和target【int】求target所在index,不在nums中返回-1
  2. 示例观察:分存在/不存在两种情况

思路:

  1. 题目给出二分查找要求;
  2. 二分查找为:前提:排序数组,找中位数:nums【mid=(l+r)//2】,如果target比nums【mid】大,说明target在右区间【mid+1,r】,反之亦然通过此类方法缩小区间,直到找到target,如果发现区间不存在即l>r,return -1

方法:同思路

实践:

复盘:

熟悉二分思路,注意判断细节

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值