0
点赞
收藏
分享

微信扫一扫

双指针 && 算法总结

春意暖洋洋 2022-04-22 阅读 62
c++算法

❤️写在开头:

目录:

          🦝🦝一,什么是双指针

          🐸🐸二,对撞指针

                                  👀👀👀 看例题👀👀👀

                                  💻💻代码实现💻💻

          🐇🐢三,快慢指针

                                  👀👀👀 看例题👀👀👀

                                  💻💻代码实现💻💻

          🦄🦄四,滑动窗口

                                  👀👀👀 看例题👀👀👀

                                  💻💻代码实现💻💻

         ❤️❤️结尾


🦝🦝一,什么是双指针

细分的话,双指针可以分为好几个类型:

接下来会结合例题详细讲解 。


🐸🐸二,对撞指针

     👀👀👀 看例题👀👀👀

💻💻代码实现💻💻: 

class Solution {
public:
    void reverseString(vector<char>& s) {
           for (int i=0,j=s.size()-1;i<s.size()/2;i++,j--){ //设置i 和 j 两个指针,一左一右
               swap(s[i],s[j]);
           }
    }
};

链接:力扣


 🐇🐢三,快慢指针

      👀👀👀 看例题👀👀👀

 💻💻代码实现💻💻: 

class Solution {
    public ListNode middleNode(ListNode head) {
ListNode p = head, q = head;
        while (q != null && q.next != null) {
            q = q.next.next;
            p = p.next;
        }
        return p;
    }
}

链接: 力扣


🦄🦄四,滑动窗口

      👀👀👀 看例题👀👀👀

 💻💻代码实现💻💻: 

class Solution {
public:
    bool checkInclusion(string s1, string s2) {
        int n = s1.length(), m = s2.length();
        if (n > m) {
            return false;
        }
        vector<int> cnt1(26), cnt2(26);
        for (int i = 0; i < n; ++i) {
            ++cnt1[s1[i] - 'a'];
            ++cnt2[s2[i] - 'a'];
        }
        if (cnt1 == cnt2) {
            return true;
        }
        for (int i = n; i < m; ++i) {
            ++cnt2[s2[i] - 'a'];
            --cnt2[s2[i - n] - 'a'];
            if (cnt1 == cnt2) {
                return true;
            }
        }
        return false;
    }
};

 链接:力扣


❤️❤️结尾:

举报

相关推荐

0 条评论