leetcode刷题心得

leetcode刷题心得

一、数组

1. 二分查找

704,35,34,69,367
1.1 循环临界点
  • while(left<=right)
1.2 向上取整
  • mid=Math.floor((left+right)/2)
  • mid=(left+right)>>1
  • 当只有两个数时,取左边的数
1.3 向下取整
  • mid=(left+right+1)/2
  • 当只有两个数时,取右边的数

2. 双指针

27,26,283,844,977
2.1 同方向
  • 一个slow一个fast
  • fast:遍历数组,检测每个数字是否符合条件
  • slow:存储符合条件的数字
  • 优点:保留数组已有顺序
  • 缺点:如果不符合条件的数字靠前,要替换的次数比较多
2.2 相反方向
  • 一个left一个right
  • left:用来检测每个数字是否符合条件
  • right:将不符合条件的进行替换
  • 优点:要替换的次数相对较少
  • 缺点:改变数组已有顺序

3. 滑动窗口

209,904,76
  • 一个或者多个left一个right
  • left:存储符合条件的元素
  • right:判断当前元素是否符合要求
  • 流程:
    • 一开始left不动,right向右移动,直到找到刚刚符合要求的子序列;
    • 向右移动left直到当前序列不满足要求,停止left
    • 向右移动right直到当前序列满足要求,从而找到新的序列
    • 比较两个序列,选择最优
    • 重复操作直到right走到序列终点

4. 螺旋矩阵

59,54,29

二、链表

203,707,206,24,19,面试题02.07,142
  • 如果没有虚拟头节点dummyNode,则需要特别处理链表头部的插入和删除操作;如果有dummyNode则不需要特别处理

三、哈希表

242,1002,349,202,454
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值