• 一。数组


    三.数组

    1.二分法

    (1) 二分法前提条件:有序(单调)

    (2)二分法要明白查找区间的定义

        查找区间的定义决定了二分法的写法。写二分法,区间的定义一般为两种,左闭右闭即[left, right],或者左闭右开即[left, right)。

    (3)二分法最常用的几个场景:查找目标值,查找左右边界

    (4)二分查找框架

    (5)查找一个数的二分搜索(基本的二分搜索):left<=right

      次算法缺陷:无法寻找左侧边界或者右侧边界

    (6)查找左侧边界的二分搜索,查找右侧边界的二分搜索

    2.双指针

    (1)应用:数组,链表,字符串

        数组:N27删除元素,N26删除重复元素,N977有序数组的平方、

        链表:N206翻转链表,N19删除链表倒数第N个节点,N160(N0207)链表相交,N141环形链表1,N142环形链表2,N876链表中点

        字符串:N344翻转字符串,N125判断回文串

        数相关:两数之和,三数之和,四数之和

    (2)左右指针:解决数组,字符串问题。如二分查找。两个指针相向而行

        快慢指针:解决链表问题。如典型的判断链表是否有环。

        滑动窗口也是特殊的双指针,解决子串问题。滑动窗口是双指针的最高境界了

    快慢指针:

    1.判断链表是否有环:

      思路:无环,fast最终会等于null;有环,fast会比slow多走一圈,最终相遇

    2.判断链表是否有环,并返回入环位置 

    3.链表中点 4.删除链表倒数第n个节点

    左右指针:

    1.二分查找。

    2.(1)两数之和1

     (2)N167两数之和2。暴力枚举和哈希法都是针对无序数组,对于有序数组可以用双指针

    3.N344反转字符串

    滑动窗口:

     HashMap的putIfAbsent()方法和getOrDefault方法得看看

    getOrDefault方法很好用

    ASCII码表:0-9 < A-Z < a-z  大小:128个字符

    1.思想:N76

     2.N3题每搞懂,得再看看

  • 相关阅读:
    PHP底层工作原理
    php WebSocket 简单实现demo
    php部署调优
    php简单随机实现发红包程序
    在Android中调用USB摄像头
    在addroutes后,$router.options.routes没有更新的问题(手摸手,带你用vue撸后台 读后感)
    Vue+elementUI开发中 Cannot read property 'resetFields' of undefined 问题解决以及原因分析
    如何在debug vue-cli建立的项目
    在Node.js使用Promise的方式操作Mysql(续)
    express框架中如何只执行一次res响应操作
  • 原文地址:https://www.cnblogs.com/midiyu/p/15416743.html
Copyright © 2020-2023  润新知