(C++)和为s的两个数字--双指针算法

简介: (C++)和为s的两个数字--双指针算法

个人主页:Lei宝啊

愿所有美好如期而遇


算法原理

双指针法,不一定是说就要使用指针,只是一种形象的说法,在数组中,我们一般将数组下标当做指针。我们定义left和right,left赋值0,right赋值右边界下标,写一个循环,当left小于right就继续循环,在循环里我们比较left和right下标对应的数组的值的和与s的大小,如果和大于s,那么我们使right--,如果大于,我们left++,如果相等,我们尾插进vector,然后break返回。

图示

我们返回4和11,记住不是返回下标,而是数组的值。

代码

class Solution 
{
public:
    vector<int> FindNumbersWithSum(vector<int> array,int sum) 
    {
        int left = 0;
        int right = array.size() - 1;
        vector<int> res;    
        while(left < right)
        {
            if(array[left] + array[right] < sum)
            {
                left++;
            }
            else if(array[left] + array[right] > sum)
            {
                right--;
            }
            else 
            {
                res.push_back(array[left]);
                res.push_back(array[right]);
                break;
            }
        }
        return res;
    }
};


目录
相关文章
|
1天前
|
C++ 存储 Java
C++ 引用和指针:内存地址、创建方法及应用解析
'markdown'C++ 中的引用是现有变量的别名,用 `&` 创建。例如:`string &meal = food;`。指针通过 `&` 获取变量内存地址,用 `*` 创建。指针变量存储地址,如 `string *ptr = &food;`。引用不可为空且不可变,指针可为空且可变,适用于动态内存和复杂数据结构。两者在函数参数传递和效率提升方面各有优势。 ```
|
3天前
|
存储 设计模式 安全
C++中的函数指针技术详解
C++中的函数指针技术详解
6 0
|
3天前
|
C++
在C和C++中,指针的算术操作
在C和C++中,指针的算术操作
|
4天前
|
缓存 负载均衡 算法
C++如何实现一致性算法
一致性哈希是一种用于分布式系统的负载均衡算法,旨在减少服务器增减导致的数据迁移。当有N台服务器时,通过哈希环将请求均匀分布到每台服务器,每台处理N/1的请求。若使用缓存如Redis,可进一步处理高并发场景。算法将哈希值空间视为环形,服务器和请求哈希后定位到环上,按顺时针方向找到第一台服务器作为负载目标。提供的C++代码实现了MD5哈希函数,以及一致性哈希算法的物理节点、虚拟节点和算法本身,以实现节点的添加、删除和请求映射。
12 1
C++如何实现一致性算法
|
5天前
|
安全 Linux 编译器
从C语言到C++_36(智能指针RAII)auto_ptr+unique_ptr+shared_ptr+weak_ptr(下)
从C语言到C++_36(智能指针RAII)auto_ptr+unique_ptr+shared_ptr+weak_ptr
16 3
|
5天前
|
安全 编译器 C语言
从C语言到C++_36(智能指针RAII)auto_ptr+unique_ptr+shared_ptr+weak_ptr(中)
从C语言到C++_36(智能指针RAII)auto_ptr+unique_ptr+shared_ptr+weak_ptr
12 1
|
5天前
|
安全 编译器 C语言
从C语言到C++_36(智能指针RAII)auto_ptr+unique_ptr+shared_ptr+weak_ptr(上)
从C语言到C++_36(智能指针RAII)auto_ptr+unique_ptr+shared_ptr+weak_ptr
10 0
|
6天前
|
C语言 容器
从C语言到C++_17(list的模拟实现)list不是原生指针的迭代器(下 )
从C语言到C++_17(list的模拟实现)list不是原生指针的迭代器
5 1
|
6天前
|
C语言 计算机视觉
从C语言到C++_17(list的模拟实现)list不是原生指针的迭代器(中)
从C语言到C++_17(list的模拟实现)list不是原生指针的迭代器
11 1
|
6天前
|
存储 算法 编译器
从C语言到C++_17(list的模拟实现)list不是原生指针的迭代器(上)
从C语言到C++_17(list的模拟实现)list不是原生指针的迭代器
8 1