首页 > 编程语言 >代码随想录算法训练营第一天(python) | 704. 二分查找、27. 移除元素。

代码随想录算法训练营第一天(python) | 704. 二分查找、27. 移除元素。

时间:2023-10-11 22:47:12浏览次数:40  
标签:27 return nums int 随想录 mid 704 移除 左闭

Leetcode 704 二分查找

题目链接:704 二分查找

关键点思路:

1、是否要进入到 while 部分的代码是 left <= right 还是 left < right, 看 [left, right] 是否是合法区间. 例如 [1, 1] 是合法区间,取<=; [1, 1) 非合法区间,取 < 。

2、缩小区间时,考虑边界是否已经比较过。

左闭右闭区间 [left, right]
class Solution:
    def search(self, nums: List[int], target: int) -> int:
        l = 0
        r = len(nums) - 1
        while l <= r:                # 左闭右闭区间
            mid = (l+r) // 2
            if target < nums[mid]:   # mid 已经比较过,所以缩小区间取 mid - 1
                r = mid - 1
            elif target > nums[mid]:  # mid 已经比较过,所以缩小区间取 mid + 1
                l = mid + 1
            else:
                return mid
        return -1
左闭右开区间 [left, right)
class Solution:
    def search(self, nums: List[int], target: int) -> int:
        l = 0
        r = len(nums)  # 左闭右开,避免错过最右端的元素
        while l < r:   # 采用左闭右开原则 [l, r)
            mid = (l+r) // 2
            if target < nums[mid]:
                r = mid                 # 缩小区间,右边为开区间
            elif target > nums[mid]:
                l = mid + 1             # 缩小区间,左边为闭区间,去除已比较过的 mid
            else:
                return mid
        return -1

标签:27,return,nums,int,随想录,mid,704,移除,左闭
From: https://www.cnblogs.com/yixff/p/17758289.html

相关文章

  • 移除ID名为id_name的元素和id置空
    1、移除ID名为id_name的元素varx=document.getElementById("id_name");//如果对象x不为空if(x!=null)x.remove();对于selectObject.remove(index)方法,以select元素为例,若指定index,则只删除其中的某一项;若不指定index,则删除整个select元素。2、移除Class名为class_name......
  • 学习笔记427—Python Keras 报错AttributeError: 'Sequential' object has no attribu
    PythonKeras报错AttributeError:'Sequential'objecthasnoattribute'predict_classes'解决方法本文文要介绍Python中,使用Keras执行yhat_classes=model.predict_classes(X_test)代码报错:AttributeError:'Sequential'objecthasnoattribute'pr......
  • day 1 数组 704.二分查找、27.移除元素
    704.二分查找题目链接:704.二分查找视频教程文章教程思路利用middle去寻找target前提条件:这道题目的前提是数组为有序数组,同时题目还强调数组中无重复元素,因为一旦有重复元素,二分查找法返回的元素下标可能就不唯一,这些都是二分法的前提,以后看到题目描述后可以先想一想......
  • 力扣-2744-最大字符串配对数目
    给你一个下标从0开始的数组words,数组中包含互不相同的字符串。如果字符串words[i]与字符串words[j]满足以下条件,我们称它们可以匹配:字符串words[i]等于words[j]的反转字符串。0<=i<j<words.length请你返回数组words中的最大匹配数目。注意,每个字符串最......
  • redis cluster增加和移除主从节点【转】
    Redis-Cluster集群之Cluster节点增减上篇我们了解了Redis的cluster集群的搭建,现在我们来说一下cluster集群的节点的增减集群增加主节点1.新建一个7006的一个节点,让其作为一个新的主节点加入,在/redis-cluster目录下,新建一个7006目录,配置相应的配置文件和数据目录,启动7006这个节......
  • poj2279
    Mr.Young'sPicturePermutationsTimeLimit:1000MS MemoryLimit:65536KTotalSubmissions:5841 Accepted:1860DescriptionMr.Youngwishestotakeapictureofhisclass.Thestudentswillstandinrowswitheachrownolongerthanth......
  • 2023-2024-1 20231327 司宏林 《计算机基础与程序设计》第2周学习总结
    学期(如2023-2024-1)学号(如:20231300)《计算机基础与程序设计》第X周学习总结作业信息这个作业属于哪个课程<班级的链接>(2022-2023-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/homework/12998......
  • ORA-27301: OS failure message: No buffer space available
    这个报错主要这是由于网络缓冲区预留的可用空间较少。可以通过调整参数min_free_kbytes设置,这个参数要设置到总内存的0.4%以下,比如 256GBRAM,vm.min_free_kbytes设置1073742,可以设置更小。numa模式的参考OracleLinux:ORA-27301:OSFailureMessage:NoBufferSpaceAvai......
  • 代码随想录 | 回溯算法 ● 理论基础 ● 77. 组合
    理论基础组合问题:N个数里面按一定规则找出k个数的集合(不强调顺序)切割问题:一个字符串按一定规则,有几种切割方式子集问题:一个N个数的集合里,有多少符合条件的子集排列问题:N个数按一定规则全排列,有几种排列方式(强调顺序)棋盘问题:N皇后,解数独等回溯法模板回溯函数模板返回值以及参数返回......
  • FastAPI学习-27 使用@app.api_route() 设置多种请求方式
    对同一个访问函数设置多个http请求方式api_route使用使用methods参数设置请求方式fromfastapiimportFastAPIapp=FastAPI()@app.api_route('/demo/b',methods=['get','post'])asyncdefdemo2():return{"msg":"demo2su......