和为s的两个数字
来源:互联网 发布:淘宝怎么微信零钱支付 编辑:程序博客网 时间:2024/05/29 03:02
参考《剑指Offer》
题目
输入一个递增排序的数组和一个数字s,在数组中查找两个数,是的它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。
解析
分别记录数组的最小的和最大的两个数,由于数组本身是递增的,即数组第一个数和最后一个数。
如果两个数的和大于sum,那么后面一个数就向前挪,如果两个数的和小于sum,那么前面一个数就向后挪。如果前后两个数挪到了同一个位置,就表示不存在这样一个和。
代码:
#include<iostream>using namespace std;int FindNumbersWithSum(int data[],int length,int sum){ int i1=0; int i2=length-1; while(i1<i2){ long long s=data[i1]+data[i2]; if(s==sum){ cout<<data[i1]<<'+'<<data[i2]<<'='<<sum<<endl; return 1; } else if(s<sum) i1++; else i2--; } return 0;}int main(){ int length=6; int data[length]={1,2,4,7,11,16}; int sum=15; int isFound=FindNumbersWithSum(data,length,sum); if(isFound==0) cout<<"找不到能组成该sum的两个数"<<endl; return 0;}
1 1
- 和为S的两个数字
- 和为S的两个数字
- 找出和为S的两个数字
- 和为S的两个数字
- 【5】和为s的两个数字
- 和为S的两个数字
- 和为s的两个数字
- 和为s的两个数字
- 和为S的两个数字
- 和为S的两个数字
- 和为S的两个数字
- 和为s的两个数字
- 和为s的两个数字
- 牛客网 | 和为S的两个数字
- 和为s的两个数字
- 和为S的两个数字
- 和为S的两个数字
- 和为S的两个数字
- 【Hihocoder [Offer收割]编程练习赛10 A】【水题】出勤记录I
- PHP Socket 编程
- Zookeeper分布式锁的简单实现
- eclipse快捷键大全
- 【BZOJ3990】排序(SDOI2015)-DFS+贪心
- 和为s的两个数字
- 使用AJAX技术实现网页部分信息的更新
- nginx 服务器重启关闭重新加载
- Git学习总结
- libgomp.so.1: version `GOMP_4.0' not found 解决办法
- 5-9 集合相似度 (set的运用)
- 网页制作中遇到的一些问题及解决方案
- Qt 的QString类的使用
- 原码、反码、补码和为什么char类型的范围是 -128~+127