输入一组按降序排列的整数数组,再输入一个整数(sum),返回数组中和为sum的两个元素
2013-12-10 14:15
344 查看
注:这道题是多益网络2014校招的二笔试题。
分析:由于该序列是降序排列的,假设随意取出数组中的两个数,如果其和等于给定值,那么它们就是我们要找的两个数;如果小于给定值,则对应的下标越小的数,其值越大,对应往前找;而如果大于给定值,对应下标越大的值,其值越小,对应向后找。及首先找到首尾两个数,再逐渐让所有的元素向中间靠拢。
注:该文章本人还在网易博客上边发表过!
代码如下:
分析:由于该序列是降序排列的,假设随意取出数组中的两个数,如果其和等于给定值,那么它们就是我们要找的两个数;如果小于给定值,则对应的下标越小的数,其值越大,对应往前找;而如果大于给定值,对应下标越大的值,其值越小,对应向后找。及首先找到首尾两个数,再逐渐让所有的元素向中间靠拢。
注:该文章本人还在网易博客上边发表过!
代码如下:
#include<iostream> using namespace std; int main(int argc, char* argv[]) { int n; cout<<"请输入数组长度"<<endl; scanf("%d", &n); int* num = new int ; for(int tmp1=0;tmp1<n;tmp1++){ scanf("%d", &(num[tmp1])); } cout<<"请输入sum的值"<<endl; int sum; scanf("%d", &sum); int i = 0; int j = n - 1; int tmp; bool solve = false; while(i < j){ tmp = num[i] + num[j]; if(tmp == sum){ solve = true; cout << num[i] << ' ' << num[j] << endl; break; } else if(tmp < sum){ i ++; } else{ j --; } } if(!solve){ cout << "there is not." << endl; } system("pause"); return 0; }
相关文章推荐
- 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。 ② 实现该线性表的遍历。 ③ 在该单链表的第i个元素前插入一个整数。 ④ 删除该单链表中的第i个元素,其值通过参数将其返回。 ⑤ 建立两个
- 给定一个整数数组,两个数字的返回索引将它们加到一个特定的目标中。 您可以假设每个输入都只有一个解决方案,并且您可能不会两次使用相同的元素。
- java每日一题:给定一个整数数组arr和整数target,返回两个索引值,使得这两个索引值对应的整数的和等于target。(arr中有且仅有一组)
- 题目:给一个排序好的整数数组A,请写一个函数,输入是数组A和一个整数x,返回数组A中值小于x的最大元素的索引值
- 输入一个整数数组,返回所有元素两两之差绝对值最小的值,O(n)算法
- 给定一个整数数组,返回数组中两个元素的和为target的索引
- 在一个二维数组中,每一行都按照从左到右递增的顺序排列,每一列都按照从上到下递增的顺序排列,请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
- 编写程序,生成一个包含20个随机整数的列表,然后对其中偶数下标的元素进行降序排列,基数下标的元素不变
- 给定一个整数数组,返回两个数字的索引,使它们相加得到一个特定目标值
- 程序员面试金典: 9.4树与图 4.3给定一个有序整数数组,元素各不相同且按升序排列,创建一颗高度最小的二叉查找树。 ---快速解法
- 输入整形数组,数组里有正数也有负数,数组中一个或连续的多个整数组成数组的子数组,求所有子数组中和的最大值 ,例如输入的数组为{1,-2,3,10,-4,7,2,-5}和最大的子数组为{3,10,
- 在一个二维数组中,每一行都按照从左到右递增的顺序排列,每一列都按照从上到下递增的顺序排列,请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 题目:返回一个整数数组中最大子数组的和。(要求程序必须能处理1000 个元素)
- 第十四周项目一数组大折腾(5)创建一个长度为16的整形数组a并初始化前15个元素,输入一个整数b,将b插入到a[0]位置(原有的数据往后“移动”)
- 获取两个数组的差异元素,返回一个包含差异元素的新数组
- 在一个二维数组中,每一行都按照从左到右递增的顺序排列,每一列都按照从上到下递增的顺序排列,请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 编写一个程序,输入两个包含 5 个元素的数组,先将两个数组升序排序,然 后将这两个数组合并成一个升序数组(合并排序)。
- 给定一个整数sum, 从有N个有序元素的数组中寻找元素a,b,使得a+b的结果最接近sum
- (2)单链表的操作 ① 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。 ② 实现该线性表的遍历。 ③ 在该单链表的第i个元素前插入一个整数。 ④ 删除该单链表中的第i个元素,其值通过参数