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

【算法】算法思想合集

数组分块

  1. 将数组分成具有某些特征的段
  2. 使用双指针算法(如果是数组,使用下标充当指针)
  3. 存在信息丢失的问题,可以考虑从后向前进行
  4. 利用单调性进行定性分析(盛最多的水)
    滑动窗口
  5. 同向移动的双指针
  6. 出窗口一般是while
  7. 必须具备单调性

二分查找

  1. 如果left=mid,那么mid就应该是右边的
  2. 如果right=mid,那么mid就应该是左边的
    这两点是为了防止取中的时候,left或right会在原地不动,造成死循环
  3. 只要有二段性,就是根据各段的性质,对于mid位置进行判断,看其符合哪段的性质
  4. 找二段性是非常重要的一环

前缀和

  1. 和可被k整除的子数组:
    a. 同余定理:(a-b)%p = k —> a%k = b%k
    b. 负数 % 正数 修正为正数: ((a % p) +p ) % p
  2. 前缀和需要考虑的特殊情况:
    a. 从后往前倒着来
    b. 可以不使用前缀和数组,而是使用hash表进行记录

位运算

  1. 提取最低位1(low bit)
    a. n & (-n)
  2. 干掉最低位1
    a. n & (n-1)
    本质就是低位的0减不动1,只能一直向前直到最低位的1才能开始减
  3. 异或
    a. 三个数异或 就相当于给这三个数做无进位相加,就相当于给这三个数的1进行抵消,并且不考虑顺序问题

动态规划

  1. 状态表示
    经验 + 题目要求:以 i 位置为结尾 / 开头,xxx
    明确 dp 的每个位置的含义。
  2. 结尾:这个位置的状态不需要使用到后面的信息
    这种方式也可以使用 贪心
  3. 开头:需要用到后面的信息
  4. 状态转移方程
    以 i 位置最近的状态进行分析 i 位置的状态应该怎么来。
    就是 i-1,i-2 等位置的状态怎么能到 i。
  5. 初始化
    dp 表需要明确最开始的几个状态,有了这几个状态,后续的才能开展。
  6. 填表顺序
    状态的填充应该是从哪里到哪里。
  7. 返回值
    题目中需要的是不是最后一个状态。

http://www.kler.cn/news/318879.html

相关文章:

  • Make breakpoint pending on future shared library load
  • mfc140u.dll引发的软件故障怎么破?mfc140u.dll文件损坏的解决办法全知道!
  • Linux 简易shell编写
  • C# winforms 使用菜单和右键菜单
  • 游戏开发2025年最新版——八股文面试题(unity,虚幻,cocos都适用)
  • 《数据压缩入门》笔记-Part 1
  • AlDente Pro for Mac电池健康保护工具
  • Centos下安装Maven(无坑版)
  • qt相关面试题
  • 实时美颜的技术突破:视频美颜SDK与直播美颜工具的开发详解
  • 【STM32】STM32G431RBT6芯片引脚默认功能是什么?
  • python学习第十二节:python开发图形界面
  • [翟旭发射器]python-推导式-列表list表达式练习
  • 计算机毕业设计之:基于微信小程序的共享充电桩系统的设计与实现
  • HTTP 教程
  • 架构面试题
  • 工业能源物联网的建设与维护该如何实现
  • 力扣P1706全排列问题 很好的引入暴力 递归 回溯 dfs
  • 2024年及未来:构筑防御通胀的堡垒,保护您的投资
  • XXl-SSO分布式单点登录框架
  • 记录一次学习--kerberos协议学习以及一些攻击手法
  • 【Java】虚拟机(JVM)内存模型全解析
  • PostgreSQL运用关键点是什么呢?
  • RL进阶(一):变分推断、生成模型、SAC
  • ESXI主机加入VCENTER现有集群提示出现常规性错误
  • Vue 自定义指令实现权限控制
  • Redis哨兵详细理论实操教程
  • UE4_后期处理七—仿红外线成像效果
  • 配置Docker镜像加速器
  • 一个10k stars开源的证件照工具