Leetcode | Binary search | 22. 74. 162. 33. 34. 153.

22. Generate Parentheses

要意识到只要还有左括号,就可以放到path里。只要右括号数量小于左括号,也可以放进去。就是valid的组合。recurse两次

74. Search a 2D Matrix

看成sorted list就好。直接用m*n表示最后一位的index,并且每次只需要

int x = mid / n;

int y = mid % n;

就可以算出位置。

值得注意的是左闭右开和左开右闭的写法

162. Find Peak Element

当一个middle不是peak的时候,middle和旁边的两个element有三种可能:单增,单减,波谷

单增/单减的话,比middle大的那边是有可能有peak的,因为如果增大再在某处减小,就有peak,如果一直增大,那么在起头/结尾的地方会有peak因为 nums[-1] = nums[n] = -∞

波谷的话,随便走一边就行

注意处理mid在最开始和最后的情况,mid-1和mid+1有的时候不valid。比如mid-1不valid的情况,就要看mid+1是不是大于mid,如果是的话就废了,如果不是就是peak(当然本题不会出现废了的情况,因为一定有peak)

33. Search in Rotated Sorted Array

 把这个图画出来。

先比较start和mid,判断mid落在左边还是右边。

如果是左边,那么当taregt大于mid和当target太小了到小于start的程度,start就应该为mid+1

如果是右边,那么当target小于mid和当target太大了到大于end-1的程度,end就应该为mid

34. Find First and Last Position of Element in Sorted Array

lowerbound 方法:

 如果lowerbound不存在(没有比target大于等于的数字)那么直接-1,-1

如果存在,那么检查target的lowerbound是不是target,如果不是,-1,-1

如果是,那么target的lb就是左边界,target+1的lb再减1就是右边界

lowerbound咋写?背下来得了。

变化1:mid==target的时候与target<mid一样的选择

变化2:返回left

and下面这个方法不太理解。?

153. Find Minimum in Rotated Sorted Array

先判断是否处在一个单增的线上,如果是的话直接返回left就行。

如果不是,那么如果mid在左半边较大的线上(mid>=start),那么start = mid+1只在右边找

如果mid在右半边线上,最小值只会在左边。end=mid(因为有可能mid本身就是最小值)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/53234.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件测试员的非技术必备技能

成为软件测试人员所需的技能 非技术技能 以下技能对于成为优秀的软件测试人员至关重要。 将您的技能组合与以下清单进行比较&#xff0c;以确定软件测试是否适合您 - 分析技能&#xff1a;优秀的软件测试人员应具备敏锐的分析能力。 分析技能将有助于将复杂的软件系统分解为…

【论文阅读】The Deep Learning Compiler: A Comprehensive Survey

论文来源&#xff1a;Li M , Liu Y , Liu X ,et al.The Deep Learning Compiler: A Comprehensive Survey[J]. 2020.DOI:10.1109/TPDS.2020.3030548. 这是一篇关于深度学习编译器的综述类文章。 什么是深度学习编译器 深度学习&#xff08;Deep Learning&#xff09;编译器将…

Hbase基础概念

HBase 一、HBase的数据模型1.HBase数据存储结构2.HBase存储概念3.HBase基本架构 二、HBase Shell1.DDL(Data Definition Language)1.namespace2.table 2.DML&#xff08;Data Manipulation Language&#xff09;1.写入数据2.读取数据3.删除数据 三、HBase组成架构1. Master架构…

相对位置编码和绝对位置编码

位置编码的区别&#xff1a; 相对位置编码和绝对位置编码是两种不同的位置编码方法。 绝对位置编码是一种基于位置嵌入的方法&#xff0c;其中每个位置都被分配了一个唯一的位置向量。这些向量是固定的&#xff0c;与输入序列的内容无关。这种编码方式对于处理较短的序列效果…

【外卖系统】文件上传与下载

文件上传 文件上传又称upload&#xff0c;将本地图片、视频等文件上传到服务器上&#xff0c;供其他用户下载或者浏览。 form表单&#xff1a;HTML中的form元素用于创建一个包含表单字段的区域&#xff0c;用户可以在该区域输入数据&#xff0c;并通过提交表单将数据发送到服务…

爬虫的基本原理:爬虫概述及爬取过程

前言 随着互联网的不断发展和普及&#xff0c;我们的生活越来越离不开网络。而网络世界中有着海量的信息和数据&#xff0c;这些信息和数据对于我们的工作和生活都有很大的帮助。但是&#xff0c;如何高效地获取这些数据呢&#xff1f;这时候&#xff0c;爬虫这个工具就派上用…

【并发专题】深入理解并发可见性、有序性、原子性与JMM内存模型

目录 前置知识课程内容一、JMM模型1.什么是JMM模型2.JMM内存区域模型3.JMM内存模型与硬件内存架构的关系4.JMM存在的必要性5.数据同步八大原子操作6.指令重排现象与并发编程的可见性&#xff0c;原子性与有序性问题指令重排现象可见性&#xff0c;原子性与有序性 7.JMM如何解决…

Apache Storm入门介绍之三分钟看懂Apache Storm

文章目录 0.前言1. 什么是 Apache Storm&#xff1f;1.1. Nimbus1.2. Zookeeper1.3. Supervisor1.4. Worker1.5 集群模式下各组件职责 2. 核心概念2.1基本架构和任务模型2.2 工作流程 3. 源码地址3.1. 代码结构3.1. 核心模块介绍 4. Storm入门实例0.创建java工程并引入依赖1. 创…

Mysql 查询统计最近12个月的数据

包括当月: SELECTt1.yf AS month,count( t2.uuid ) AS total FROM(SELECTDATE_FORMAT(( CURDATE()), %Y-%m ) AS yf UNIONSELECTDATE_FORMAT(( CURDATE() - INTERVAL 1 MONTH ), %Y-%m ) AS yf UNIONSELECTDATE_FORMAT(( CURDATE() - INTERVAL 2 MONTH ), %Y-%m ) AS yf UNION…

使用vim-cmd工具给ESXi虚机定期打快照

VMware虚拟化 - 建设篇 第四章 使用vim-cmd工具给ESXi虚机定期打快照 VMware虚拟化 - 建设篇系列文章回顾使用vim-cmd工具给ESXi虚机定期打快照前言前提条件ESXi新增执行快照备份的sh脚本ESXi添加crond任务并使其生效ESXi指定部分虚拟机不执行定期快照(附加)虚拟机自定义属性…

Apache RocketMQ 远程代码执行漏洞(CVE-2023-37582)

​ 漏洞简介 Apache RocketMQ是一款低延迟、高并发、高可用、高可靠的分布式消息中间件。CVE-2023-37582 中&#xff0c;由于对 CVE-2023-33246 修复不完善&#xff0c;导致在Apache RocketMQ NameServer 存在未授权访问的情况下&#xff0c;攻击者可构造恶意请求以RocketMQ运…

韦东山Linux驱动入门实验班(5)LED驱动---驱动分层和分离,平台总线模型

前言 &#xff08;1&#xff09;前面已经已经详细介绍了LED驱动如何进行编写的代码。如果韦东山Linux驱动入门实验班&#xff08;4&#xff09;LED驱动已经看懂了&#xff0c;驱动入门实验班后面的那些模块实验&#xff0c;其实和单片机操作差不太多了。我就不再浪费时间进行讲…

【WebGIS实例】(10)Cesium开场效果(场景、相机旋转,自定义图片底图)

效果 漫游效果视频&#xff1a; 【WebGIS实例】&#xff08;10&#xff09;Cesium开场效果&#xff08;场景、相机 点击鼠标后将停止旋转并正常加载影像底图&#xff1a; 代码 可以直接看代码&#xff0c;注释写得应该比较清楚了&#xff1a; /** Date: 2023-07-28 16:21…

三数之和——力扣15

文章目录 题目描述法一 双指针排序 题目描述 法一 双指针排序 class Solution{ public:vector<vector<int>> threeSum(vector<int>& nums){int nnums.size();vector<vector<int>> ans;sort(nums.begin(), nums.end());for(int first0;first&…

在docker中没有vi如何修改docker中的文件

今天在做学成在线的项目&#xff0c;遇到了一个问题&#xff0c;就是死活登不上xxl-job&#xff0c;按照之前遇到的nacos的问题&#xff0c;我怀疑很大概率是和当时的ip设置有关&#xff0c;不知道nacos的ip怎么修改的同学&#xff0c;可以看看这篇文章&#xff1a;关于docker中…

学习数学助手Schooltech Math Resource Studio 7.0 Crack

数学资源工作室 数学工作表生成器&#xff1a;快速轻松地创建数学工作表 使用易于使用的数学工作表生成器软件创建可打印的数学练习工作表。通过练习、谜题、问题等提高数学技能。 瞄准学习需求并激励学生 Math Resource Studio 是个性化数学教学的理想软件解决方案&#xff0c…

链表刷题常用技巧——快慢指针

强大&#xff0c;不动如山的强大&#xff0c;不会输给自己的真正的强大。 往期回顾&#xff1a; 数据结构——单链表 单链表力扣刷题 文章目录 经典例题&#xff1a;链表的中间结点 题目分析及双指针思路引入 双指针图解 leetcode 核心代码 判断环形链表——快慢指针…

小研究 - 主动式微服务细粒度弹性缩放算法研究(四)

微服务架构已成为云数据中心的基本服务架构。但目前关于微服务系统弹性缩放的研究大多是基于服务或实例级别的水平缩放&#xff0c;忽略了能够充分利用单台服务器资源的细粒度垂直缩放&#xff0c;从而导致资源浪费。为此&#xff0c;本文设计了主动式微服务细粒度弹性缩放算法…

【SpringBoot】笔记2

文章目录 45、web实验-抽取公共页面46、web实验-遍历数据与页面bug修改47、视图解析-【源码分析】-视图解析器与视图[暂时没看]48、拦截器-登录检查与静态资源放行49、拦截器-【源码分析】-拦截器的执行时机和原理50、文件上传-单文件与多文件上传的使用51、文件上传-【源码流程…

socket

域套接字 Unix domain socket Unix Domain Socket&#xff08;UDS&#xff0c;Unix 域套接字&#xff09;&#xff0c;它还有另一个名字叫 IPC&#xff08;inter-process communication&#xff0c;进程间通信&#xff09;。 使用 UDS 的好处显而易见&#xff1a;不需要经过网…