剑指offer之和为s的数组

1 问题

输入一个递增排序数组和数字和s,在数组里面找2个数,他们的和是s,如果有多对,只需要输出一对。
比如数组{1, 2, 4, 7, 11, 15},我们输出4 ,11

 

 

 

 

 

 

 

2 思路

我们定义2个首尾指针,先是1+15,大于15,然后我们尾巴指针左移一下,然后就是1+11 小于15,然后首指针右移动一下,2+11,依次类推。
 

 

 

 

 

 

3 代码实现

#include <stdio.h>
#include <stdlib.h>#define true 1
#define false 0int findNumber(int *a, int len, int sum, int *num1, int *num2)
{int result = false;	if (NULL == a || len < 1 || NULL == num1 || NULL == num2){return result;}int start = 0;int end = len - 1;while (end > start){*num1 = a[start];*num2 = a[end];int curSum = *num1 + *num2;if (curSum == sum){result = true;break;}else if (curSum > sum){--end;}else{++start;}}return result;
}int main()
{int a[] = {1, 2, 4, 7, 11, 15};int num1 = 1;int num2 = 3;int result = findNumber(a, sizeof(a) / sizeof(int), 15, &num1, &num2);if (result == 1){printf("the num1 is %d the num2 is %d\n", num1, num2);}else{printf("do not find the two number in numbers");}return 0;
}

 

 

 

 

 

4 运行结果

the num1 is 4 the num2 is 11

 

 

 

5 代码优化

	while (end > start){int curSum = a[start] + a[end];if (curSum == sum){*num1 = a[start];*num2 = a[end];result = true;break;}else if (curSum > sum){--end;}else{++start;}}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288141.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle 事务_从Oracle到PG-PostgreSQL的MVCC机制简介

作者&#xff1a;甘植恳-AkenPostgreSQL和Oracle、MySQL等RDBMS一样&#xff0c;都有自己的并发控制机制。而并发控制的目的是为了在多个事务同时运行时保持事务ACID属性。MVCC即Multi-version concurrence control首字母缩写&#xff0c;MVCC会为每个数据更改操作创建数据块或…

【Microstation】不能从对话框中装载/创建类型为 ‘HTML‘,id =41510001 的对话框条目,该对话框为: “文本编辑器 - 字处理器“,GCSDIALOG 已装载。

在Win7上安装MicroStation V8i简体中文版,在添加文字图层的时候,点击出现提示“不能从对话框中装载/创建类型为 HTML,id =41510001 的对话框条目,该对话框为: "文本编辑器 - 字处理器",GCSDIALOG 已装载。”,问题出在Win7对该软件的兼容性上。 MS软件提供了三种…

fastdfs 一个group内实现按照不同的项目,指定路径存储.

为什么80%的码农都做不了架构师&#xff1f;>>> 环境介绍: 1: 公司目前有5个项目 A B C D E 日后可能会有所增加. 2: 使用fastdfs存储这5各项目的文件,要求各各项目的文件分开存储,也就是每个项目的文件存储到一个固定的位置. 3: 三台机器ip地址分配如下 tracker…

一个WPF开发的打印对话框-PrintDialogX

今天五月一号&#xff0c;大家玩的开心哦。1. 介绍今天介绍一个WPF开发的打印对话框开源项目-PrintDialogX[1]&#xff0c;该开源项目由《WPF开源项目&#xff1a;AIStudio.Wpf.AClient》[2]作者推荐。欢迎使用 PrintDialogX, 这是一个开源项目。免费用于商业用途。用于 C# 的自…

这一新的可视化方法教你优雅地探索相关性

一个古老的诅咒一直萦绕着数据分析&#xff1a;我们用来改进模型的变量越多&#xff0c;那么我们需要的数据就会出现指数级的增长。不过&#xff0c;我们通过关注重要的变量就可以避免欠拟合以及降低收集大量数据的需求。减少输入变量的一种方法是鉴别其对输出变量的影响。变量…

cannot fetch plan for SQL_ID: 5qgz1p0cut7mx, CHILD_NUMBER: 0

SQL>set serveroutput off --一定要关SQL> select * from table(dbms_xplan.display_cursor(null,null,ADVANCED));PLAN_TABLE_OUTPUT--------------------------------------------------------------------------------------------------------------------------…

【新手宝典】一篇博文带萌新建站并了解建站体系流程和对萌新友好的便捷方式,这篇博文很有可能是你的启蒙文

前言 本片博文主要面向于还没接触过web开发的萌新&#xff0c;以及想知道整体流程并且完成建站的萌新&#xff1b;如果你是个大佬&#xff0c;就没必要看下去了。 本篇博文没有难啃的骨头&#xff0c;请各位萌新放心食用。 本篇博文采用通俗易懂的方式讲解&#xff0c;轻松并…

剑指offer之剪绳子问题

1 问题 给你一根长度为n的绳子&#xff0c;请把绳子剪成m段 (m和n都是整数&#xff0c;n>1并且m>1)每段绳子的长度记为k[0],k[1],…,k[m]. 请问k[0] * k[1] …k[m]可能的最大乘积是多少&#xff1f; 例如&#xff0c;当绳子的长度为8时&#xff0c;我们把它剪成长度分别…

计算机打字比赛活动策划书怎么写,打字比赛策划书范文.docx

打字比赛策划书范文第 PAGE \* Arabic \* MERGEFORMAT 7 页打字比赛策划书范文打字比赛策划书(一)一、比赛简介&#xff1a;为了丰富大学生的课余生活&#xff0c;提高学生动手能力和综合素质&#xff0c;本协会面对全体协会成员开展此项打字比赛活动。此项活动为我协会电脑培训…

okhttp上传图片和其他参数_Android中Okhttp3实现上传多张图片同时传递参数_放手_前端开发者...

之前上传图片都是直接将图片转化为io流传给服务器&#xff0c;没有用框架传图片。最近做项目&#xff0c;打算换个方法上传图片。Android发展到现在&#xff0c;Okhttp显得越来越重要&#xff0c;所以&#xff0c;这次我选择用Okhttp上传图片。Okhttp目前已经更新到Okhttp3版本…

MicroStation V8i简体中文版中文字体乱码解决办法

Bentley (奔特力)是一家软件研发公司,其核心业务是满足负责建造和管理全球基础设施,包括公路、桥梁、机场、摩天大楼、工业厂房和电厂以及公用事业网络等领域专业人士的需求。Bentley 在基础设施资产的整个生命周期内针对不同的职业,包括工程师、建筑师、规划师、承包商、…

剑指offer之斐波那契数列

1 问题 写一个函数&#xff0c;输入n,求斐波那契数列的第n项。斐波那契数列定义如下。 f(n) 0; (n 0)f(n) 1; (n 1)f(n) f(n - 1) f(n - 2); (n > 2); 2 分析 1) 直接用递归 2) 我们用两个变量保持每次需要计算下一个值得前面2个数&#xff0c;从最前面开始迭代。…

网页特殊符号HTML代码大全

网页特殊符号HTML代码大全 HTML特殊字符编码大全&#xff1a;往网页中输入特殊字符&#xff0c;需在html代码中加入以&开头的字母组合或以&#开头的数字。下面就是以字母或数字表示的特殊符号大全。 &acute;©©>>&micro;&reg;&&amp…

惠普ProDesk行业专用台式机U盘不识别解决办法

惠普ProDesk行业专用台式机在使用的过程当中&#xff0c;老出现插入U盘不识别的问题&#xff0c;总是需要在重启的过程中插入U盘才能使用U盘&#xff0c;解决办法是&#xff1a;&#xff08;1&#xff09;打开设备管理器&#xff0c;如下图所示&#xff1a;&#xff08;2&#…

【一】Windows API 零门槛编程指南——MessageBox 基本使用及基础讲解

本篇作为Windows API 系列文章的第一篇&#xff0c;将简要的讲解一下什么是Windows API&#xff0c;Windows API能做些什么&#xff0c;并且尽可能讲解一些新出现的专有名词&#xff1b;本系列博文几乎没有难啃的“专业术语”&#xff0c;尽量让读者能够看明白文章所述内容&…

计算机辅助翻译的启示,翻译单位研究对计算机辅助翻译启示.PDF

2009 年第 6 期 外语研究 2009 , №6总第 118 期 Foreign L anguages Research Serial №118翻译单位研究对计算机辅助翻译的启示苏明阳 丁  山( 国际关系学院 ,江苏 南京 2 10039)摘  要 : 本文是将翻译理论研究成果引入并指导计算机辅助翻译系统发展的一个尝试 。作者首先…

中国人工智能学会通讯——基于视频的行为识别技术 1.1 什么是行为

今天跟大家分享的主题是基于视频的 行为识别领域研究&#xff0c;主要介绍一下早期 的非深度学习传统方法和近期深度学习 方法取得的结果。深度学习方法带来了 非常大的变革&#xff0c;提升了识别系统的性能&#xff0c; 但这并不意味着我们把传统的东西都要 抛弃&#xff0c;…

querybuilder 排序_elasticsearch的匹配与排序问题

后台搜索使用的java apipublic List searchQueryTeam(String term, int limit, int offset, int isHighlight, long seed) throws Exception {final List list new ArrayList();SearchRequestBuilder srbTeam client.prepareSearch(INDEX_NAME).setTypes("Team").s…

剑指offer之青蛙跳台阶问题

1 问题 一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级台阶&#xff0c;求该青蛙跳上一个n级的台阶总共有多少种跳法&#xff1f; 2 分析 我们可以定位函数f(n),n为n级别的台阶&#xff0c;f(n)的值是青蛙有多少种跳法&#xff0c;我们知道当n为1的时候&#xff0c;f…

惠普ProDesk行业专用台式机U盘重装系统时显示器不显示的解决办法

该配置的机子是独立显卡&#xff0c;也就是说主机后面有两个显示器接口&#xff0c;换一个试试吧&#xff0c;超级管用。