25期代码随想录算法训练营第一天

编程入门 行业动态 更新时间:2024-10-09 01:20:55

25期代码随想录<a href=https://www.elefans.com/category/jswz/34/1770096.html style=算法训练营第一天"/>

25期代码随想录算法训练营第一天

目录

  • 704. 二分查找
    • 代码
  • 27. 移除元素
    • 代码
  • 二分题练习
    • 875. 爱吃香蕉的珂珂
      • 代码

704. 二分查找

链接

代码

左闭右闭 – [left, right]

class Solution:def search(self, nums: List[int], target: int) -> int:l, r = 0, len(nums)-1while l <= r:mid = l + (r - l) // 2 #C++ 里面防止溢出,python中没这个考虑if nums[mid] < target:l = mid + 1elif nums[mid] > target:r = mid - 1else:return midreturn -1

左闭右开 – [left, right)
因为取值取不到nums[r],所以我们有l < rr = mid的改动。

class Solution:def search(self, nums: List[int], target: int) -> int:l, r = 0, len(nums)while l < r:mid = l + (r - l) // 2if nums[mid] < target:l = mid + 1elif nums[mid] > target:r = midelse:return midreturn -1

27. 移除元素

链接

代码

双指针

class Solution:def removeElement(self, nums: List[int], val: int) -> int:l, r = 0, len(nums) - 1 while l <= r:if nums[l] == val:nums[l] = nums[r]r -= 1else:l += 1return l

二分题练习

875. 爱吃香蕉的珂珂

链接

代码

class Solution:def minEatingSpeed(self, piles: List[int], h: int) -> int:l, r = 1, max(piles)res = rwhile l <= r:speed = l + (r - l) // 2total_time = 0for p in piles:total_time += math.ceil(float(p) / speed)if total_time <= h:res = speedr = speed - 1else:l = speed + 1return res

更多推荐

25期代码随想录算法训练营第一天

本文发布于:2023-12-03 10:47:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1654500.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:算法   训练营   代码   随想录

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!