Leetcode刷题:双指针

一个好的力扣题解目录

1,两数之和

在这里插入图片描述
思路:主要利用双指针,在排序后的列表中进行O(n)的搜索。

class Solution {
    
    
public:
    vector<int> twoSum(vector<int>& numbers, int target) {
    
    
        int l = 0;
        int r = numbers.size()-1;
        //双指针
        while(l<r){
    
    
            if(numbers[l]+numbers[r]==target)
                break;
            else if(numbers[l]+numbers[r] < target)
                l++;
            else
                r--;
        }
        vector<int> ret={
    
    l+1,r+1};
        return ret;
    }
};

2,平方和

在这里插入图片描述
思路:类似于双指针从两端遍历;
内存溢出解决方法:采用long定义 r和l或者采用相减判断;

class Solution {
    
    
public:
    int judgeSquareSum(int c) {
    
    
        long r = floor(sqrt(c));
        long l = 0;
        bool flag = false;
        while(l<=r){
    
    
            if(r*r+l*l == c){
    
    
                flag=true;
                break;
            }
            else if(r*r+l*l < c)
                l++;
            else
                r--;
        }
        return flag;
    }
};

おすすめ

転載: blog.csdn.net/weixin_44080131/article/details/110789191