当前位置: 首页 > news >正文

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本身就是最小值)。

http://www.lryc.cn/news/101775.html

相关文章:

  • 生命在于折腾——面试问题汇总
  • <Java>Map<String,Object>中解析Object类型数据为数组格式
  • 别再分库分表了,试试TiDB!
  • Java进阶之Dump文件初体验
  • 基于扩展(EKF)和无迹卡尔曼滤波(UKF)的电力系统动态状态估计(Matlab代码实现)
  • 曲线拟合(MATLAB拟合工具箱)位置前馈量计算(压力闭环控制应用)
  • 小程序使用echarts
  • 面向对象——封装
  • 【LeetCode】160.相交链表
  • 【JWT的使用】
  • Python获取音视频时长
  • TCP四次握手为什么客户端等待的时间是2MSL
  • Android Studio 启用设备远程调试配置完整步聚
  • 玩转LaTeX(三)【数学公式(基础)、​矩阵、多行公式】
  • jenkins 配置git
  • 单机部署MinIo并设置开机自启
  • Latex | 使用MATLAB生成.eps矢量图并导入Latex中的方法
  • 宝塔面板定时任务重启各种服务
  • Ansible playbook编写
  • 个人博客系统 -- 登录页面添加图片验证码
  • 剑指offer10-I.斐波那契数列
  • 13年测试经验,性能测试-压力测试指标分析总结,看这篇就够了...
  • 大数据课程D3——hadoop的Source
  • F5 LTM 知识点和实验 4-持久化
  • SpringBoot之WebMvcConfigurer详解
  • WPF实战学习笔记22-添加自定义询问窗口
  • Spring Boot项目的创建
  • Python加载数据的5种方法
  • QPoint、QLine、QSize、QRect
  • vue+leaflet笔记之地图量测