数组、链表以及字符串常见解题思路

数组、链表以及字符串常见解题思路


  1. 数组

    常见思路:排序二分(单调数组查找的情况)、模拟下标法(鸽笼)(看一看nums[i]的范围,如果很小就可以使用鸽笼)、前缀和(经常和单调栈一起出,解决最长最短子数组之类的问题)、双指针滑动窗口(满足条件的子数组长度)、贪心(还是和子数组长度有很大关系)、合并区间问题

    • 其中最重要的就是二分法(双指针?)
    • 鸽笼法会和前缀和混在一起 用来找比自己小的元素的个数(注意nums[i]的范围)
    • 合并区间问题(基本上都要排序,还有一个就是类似会议室的那种)
    • 数组的贪心问题 (峰值问题 峰和谷问题)
    • 给小孩发糖—》 二分法 找一个最小或最大值 满足一个条件需要挨个遍历是 可以使用二分法
  2. 链表

    常见思路:递归/迭代 其实就是让你考虑怎么修改链表达到要求:双指针

    • 合并链表 老生常谈
    • 删除链表中的特定节点 老生常谈
    • 翻转
    • 找链表中点
  3. 字符串

    常见思路:双指针(两个字符串比较)、dp、滑动窗口

    • 翻转倒置 删除 添加 balabalabala 老生常谈

    • 如果涉及String中字符的交换 可以先生成char数组

    • 何为双射:即 s 的任意一个字符被 t 中唯一的字符对应,同时 t 的任意一个字符被 s中唯一的字符对应。

    • 如果两个字符串 一个比一个只多了一位其他相等 可以用sum来相减少

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值