剑指offer 和为S的两个数字
题目:
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
输出描述:
对应每个测试案例,输出两个数,小的先输出。
代码:
1 class Solution { 2 public: 3 vector<int> FindNumbersWithSum(vector<int> array,int sum) { 4 vector<int> p; 5 int length = array.size(); 6 int low = 0, high = length -1; 7 while(low < high){ 8 int Sum = array[low] + array[high]; 9 if( Sum < sum) low ++; 10 else if( Sum > sum) high --; 11 else{ 12 p.push_back(array[low]); 13 p.push_back(array[high]); 14 break; 15 } 16 } 17 return p; 18 } 19 };
我的笔记:
利用滑动窗口的原理,设置上限指针和下限指针,并根据Sum和的情况来移动指针,题目要求乘积最小,通过这样计算可以发现,两数距离越大。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具