• 双指针法应用详解;


    双指针法:

    双指针法
    通常用在线性的数据结构中,比如链表(结点)和数组(索引)。
    指针其实就是数据的索引或者链表的结点。两个指针朝着左右两个方向移动,直到满足搜索条件。

    同向双指针---删除数组或链表中重复的元素,(线性表前提是有序的);
    快慢指针---一般用在链表中,比如求链表的中点、判断链表是否有环、判断链表换的起点、环的长度、以及链表的倒数第K个元素;
    异向双指针---比如在二分查找中用的就是;
    滑动窗口---其实就是在数组或者链表某个区间上的操作,比如求最长/最短子字符串或是特定子字符串的长度要求。

    滑窗法应用情况:

    查找满足一定条件的连续区间的性质(长度等)的问题
    “请找到满足xx的最x的区间(子串、子数组)的xx”
    滑窗法

    while(right < s.size()) {  //双层while实现
    	    window.add(s[right]);
    	    while (window 符合要求) {        // 如果符合要求,移动 left 缩小窗口,查看是否有更优解
    	        res = minLen(res, window);  // 即如果这个窗口的子串更短,则更新 res
    	        window.remove(s[left]);
    	        left++;
    	    }
    	    right++;
    	}
    	return res;
    }
    
  • 相关阅读:
    算法竞赛进阶指南--lowbit运算,找到二进制下所有是1的位
    linux
    conda配置安装pytorch
    anaconda的安装及使用
    python操作mysql
    python生成文字云
    决策树基本原理
    Ubuntu截图软件
    ubuntu安装teamviewer
    k-最近邻算法基本原理
  • 原文地址:https://www.cnblogs.com/icemiaomiao3/p/16010644.html
Copyright © 2020-2023  润新知