【代码随想录刷题记录】LeetCode704二分查找

news/2024/10/24 12:27:54/

读研以后写AI那些玩意写多了,确实需要练练算法,我现在写个二分查找都出现问题,绷不住了,而且过CSP竞赛是毕业条件,没办法,以后一天刷一个题吧,太忙了

1. 左闭右闭

class Solution {
public://左闭右闭int search(vector<int>& nums, int target) {int left = 0; //最左侧下标int right = nums.size() - 1; //最右侧下标/*注意!!!求解中点是不断地求解,不是求解一次就完成了,我一开始把求解中点写到循环外了,这是错误的*///(错误)int middle = ((right - left) >> 1) + left; //求解中点下标// 两边都能取到,所以用小于等于while(left <= right){// 中点的判断条件是right - left(区间长度)除2(相当于右移1位)再加left(因为区间不一定是从0开始的)int middle = ((right - left) >> 1) + left; //求解中点下标//如果中间值就是target,直接返回中间下标if(target == nums[middle]){return middle;}//如果target大于中间值,向右子列寻找,则left变成middle+1else if(target > nums[middle]){left = middle + 1;}//如果target小于中间值,向左子列寻找,则right变为middle-1(因为是左闭右闭,闭合包括区间端点,所以需要抠除middle)else{right = middle - 1;}}//都过一遍没找到,返回-1return -1;}
};

2. 左闭右开

class Solution {
public://左闭右开int search(vector<int>& nums, int target) {int left = 0; //最左侧下标int right = nums.size(); //这儿一开始我写错了,还以为是nums.size(),右侧是开区间取不到端点,可以直接用nums的size,相当于最后一个元素下标+1//左闭右开while(left < right){// 中点的判断条件是right - left(区间长度)除2(相当于右移1位)再加left(因为区间不一定是从0开始的)int middle = ((right - left) >> 1) + left; //求解中点下标//如果中间值就是target,直接返回中间下标if(target == nums[middle]){return middle;}//如果target大于中间值,向右子列寻找,则left变成middle+1else if(target > nums[middle]){left = middle + 1;}//如果target小于中间值,向左子列寻找,则right变为middle(因为是左闭右开,开区间不包括区间端点,所以直接是middle)else{right = middle;}}//都过一遍没找到,返回-1return -1;}
};

http://www.ppmy.cn/news/1426167.html

相关文章

获取会话公钥

----------------------------------------------------举例 签到 接口开始--------------------------------------------------- 第一步&#xff1a;-----请求报文明文:{"body":{},"head":{"ywId":"GY0001"}} ODxdq2/WhHlCKoLIGNV2j…

Jmeter BeanShell调用Java方法加密

1、添加BeanShell前置处理器 由于请求接口时&#xff0c;会传加密参数。加密过程会在请求之前完成&#xff0c;所以需要使用前置处理器中beanshell preprocessor 2、编写BeanShell脚本 ①定义一个beashell变量&#xff1a;phoneNum&#xff0c;在Beanshell中可以直接调用Jmete…

wsl ubuntu18.04升级为cmake-3.15.3

wsl ubuntu18.04 默认的cmake为3.10&#xff0c;编译CMakeLists.txt经常需要高版本cmake。 升级过程如下&#xff1a; 下载cmake-3.15.3-Linux-x86_64.tar.gz wget https://cmake.org/files/v3.15/cmake-3.15.3-Linux-x86_64.tar.gz 解压文件 tar zxvf cmake-3.15.3-Linux-x86…

ui生成代码详细教程

被askmanyai的图生代码技术秀到了&#xff01;前端开发效率&#xff0c;提升到秒级 完全吊打了阿里的图生代码技术&#xff01; 上传一张网站图片或者UI稿&#xff0c;然后用askmanyai生成实现这个网站的代码的教程来啦&#xff01; 在askmanyai的中文网站上一分钟就能实现&…

java面向对象的封装Triangle

&#xff08;1&#xff09;定义三角形类Triangle&#xff0c; * - 声明实例变量a,b,c&#xff0c;代表三角形三条边&#xff0c;全部私有化private&#xff0c; * - 提供每条边的get方法&#xff0c; * - 提供public void setBases(double a, double b, double c)&#xff1a;要…

【数组】【自定义排序】Leetcode 56. 合并区间

【数组】【自定义排序】Leetcode 56. 合并区间 解法1 ---------------&#x1f388;&#x1f388;56. 合并区间 题目链接&#x1f388;&#x1f388;------------------- 解法1 进行二维数组按照第一维度升序排序&#xff1a;Arrays.sort( nums, (o1,o2) -> o1[0]-o2[0] ) …

websocket 和 eventsource 的区别和应用

先从语法方面说&#xff0c;再从特性方面说&#xff0c;再说应用场景 EventSource 和 WebSocket 都是用于实现服务器和客户端之间的双向通信的技术&#xff0c;但它们有一些重要的区别&#xff1a; 协议&#xff1a; WebSocket 使用自定义的协议&#xff0c;它是一种全双工通信…

Java SpringBoot基于微信小程序的高速公路服务区充电桩在线预定系统,附源码

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…