0
点赞
收藏
分享

微信扫一扫

学东西总是像极了暴力枚举的我,想做一枚快乐的双指针

快乐码农Alan007 2022-05-05 阅读 77

目录

前言

class Solution {
public:
    string reverseOnlyLetters(string s) {
        int n = s.size();
        int l = 0 , r = n-1;
        while(l < r)
        {
            //按照题意,只是交换字母,其他的就直接跳过
            while(!(s[l] <= 122 && s[l] >= 97 || s[l] >= 65 && s[l] <= 90) && l < r) l++;
            while(!(s[r] <= 122 && s[r] >= 97 || s[r] >= 65 && s[r] <= 90) && l < r) r--;
                char tmp = s[l];
                s[l] = s[r];
                s[r] = tmp;
                l++,r--;
        }
        return s;
    }
};

在这里插入图片描述

class Solution {
public:
    vector<int> twoSum(vector<int>& numbers, int target) {
        int n = numbers.size();
        vector<int> ans;

        int l = 0, r = n-1;
            while(l < r)
            {
                if(numbers[l]+ numbers[r] ==  target)
                {
                    ans.push_back(l+1);
                    ans.push_back(r+1);
                    break;
                }
                //如果两个元素之和大于目标值,右指针减一下,从而减少整体值
                if(numbers[l]+ numbers[r] > target) r--;
                else l++;
            }
        return ans;
    }
};

我电脑似乎出问题了蛮,其他网页acwing、洛谷、codeforces都能能打开,Leetcode打不开…
在这里插入图片描述
先浅放中午写的两个题,,待会下课回来写咱社区的题啦,后续补上这两个双指针😭

举报

相关推荐

1922 懒惰的牛(枚举、双指针)

0 条评论