牛客网-哔哩哔哩

找出有序数组中和为sum的两个数

http://www.nowcoder.com/questionTerminal/5c49caf30e6d465893f5c492351e1ed5

来源:牛客网-哔哩哔哩笔试题
[编程题]找出有序数组中和为sum的两个数
热度指数:427时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M
算法知识视频讲解
找出有序数组(从小到大排列)中和为sum的两个数,要求复杂度为O(n),找到一组即可
输入描述:
第一行:数组长度
第二行:数组各项的值
第三行:sum
输出描述:
若存在,输出和为sum的两个数,以空格分隔;若不存在,输出notfound
示例1
输入
5
1 3 4 6 8
10
输出
4 6
示例2
输入
5
1 3 4 6 8
13
输出
notfound

二分解法:
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
using namespace std;</algorithm></iostream>

int main(){
int n,sum,k;
scanf("%d",&n);
int a[n];
for(int i = 0; i < n; i++){
scanf("%d",&a[i]);
}
scanf("%d",&sum);
sort(a,a + n);
for(k = 0;k < n;k++){
int tem = sum - a[k],l=k+1,r = n;
if(tem <= 0){printf("notfound");break;}
while(l < r){
int mid = (l+r)>>1;
if(tem == a[mid]){
printf("%d %d",sum-tem,a[mid]);tem = 0;
break;
}
else if(tem > a[mid]){
l = mid+1;
}
else{
r = mid;
}
}
if(tem==0)break;
}
if(k == n)printf("notfound");
}

全部评论

相关推荐

压力很大,面试官全程高压,问的问题不难,但是没有任何反馈,很慌张,也无算法。实习问了20分钟,一直问我你们做的有什么用,总时长一小时1.学校都有什么课程2.spring的ioc原理以及优点3.除了解耦还知道什么?4.springboot与spring区别,二者的源码看过没?Tomcat了解嘛?有没有具体看过5.spring的bean,面试官一直在重复一个思想问我懂不懂,完全没听过6.mybatis是干什么的?ibatis用过没?平常怎么写SQL?完全不写嘛?7.设计一个分布式双十一秒杀系统(前端,网关,缓存,数据库防超卖全设计)8.怎么做限流9.缓存与数据库一致性,你做异步要用户等你嘛?10.负载均衡怎么做11.多数据中心还是单数据中心,如果出现没卖完怎么做(到这完全不会了,面试官直接说换个话题吧)12.平常读书吗?13.上过哲学课嘛?14.兴趣爱好有没有15.对ai的看法16.来深圳有问题嘛?17.为什么不考研18.上大学带给了你什么?你提升在哪里,有没有具体的例子?反问:1.现在手机都有应用市场,应用宝怎么盈利?除了手机应用市场还是有人用,现在在做跨端,微软都有合作,之后会进军mac,主要做游戏,腾讯本身就是游戏大户。2.面试表现?整体评价一下会给到反馈。面完直接变HR面,今天HR面后,已经转为录用评估了,来牛客许个愿,暑期现在还没什么面试,希望能拿个offer之后再考虑要不要留在手子吧。
nunuking:三面压力这么大吗,面试的会议约了多长时间呀
面试问题记录
点赞 评论 收藏
分享
03-12 09:57
软件测试
程序员小白条:1)确定测试,测开的方向,技术栈不能写这么少 2)课程凑数的,不是99,100分没必要写 3)实习经历这块要有突出的不是劳动性质的亮点,自己设计的什么方案,什么自动化?什么提效工具?不是一些边角料,人云亦云的东西,没吸引力 4) 校园经历纯没用 5)尽量少写减分项
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
1
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务