【剑指offer】【41】找出升序数组中和为给定值的两个数字

牛客网剑指Offer - java版 剑指Offer - java版 文章目录剑指Offer - java版JZ01JZ02 替换空格JZ03 从尾到头打印链表JZ04 重建二叉树JZ05 用两个栈实现队列JZ06 旋转数组的最小数字JZ07 斐波那契数列JZ08 跳台阶问题JZ09 青蛙跳台阶JZ10 矩形覆盖JZ11 二进制中1的个数JZ12 数值的整数次方JZ13 调整数组顺序,使奇数位于偶数前面JZ14 链表中倒数第k个结点JZ15 反转链表JZ16 合并两个排序的链表JZ17 树的子结构JZ18 二叉树的镜像JZ19 顺时针打印矩阵J 阅读详情

描述:

输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。如果有多对数字
的和等于输入的数字,输入任意一对即可。
例如输入数组1、2、4、7、11、15 和数字15。由于4+11=15,因此输出4和11。

分析:

(1)如果我们不考虑时间复杂度,最简单想法莫过于先在数组中固定一个数字,再依次判断数组中剩下的n-1个数字与它的和是不是等于输入的数字。可惜这种思路需要的时间复杂度是O(n^2)。

(2)最初我们找到数组的第一个数字和最后一个数字。当两个数字的和大于输入的数字时,把较大的数字往前移动;当两个数字的和小于输入数字时,把较小的数字往后移动;当相等时,打完收工。这样扫描的顺序是从数组的两端向数组的中间扫描。

void findTwoNumber(int A[],int n,int sum){
    //A是递增数组
    int left = 0;
    int right = n - 1;
    int target1;
    int target2;
     while(left < right){
        if(A[left] + A[right] > sum){
            right--;
         }
         else if(A[left] + A[right] < sum){
            left++;
        }
        else{//相等的时候就跳出
            target1 = A[left];
            target2 = A[right];
            break;
         }
    }
    System.out.print(target1);
    System.out.print(target2);
}
剑指offer所有编程练习总结分析 给出剑指offer所有题目描述和对应的解题思路,并且在最有给出对应的代码展示和测试内容 由于牛客剑指Offer题目经过整理和筛选,是面试备考的经典资源之一,因此它的重要性在面试准备过程中是很高的。做这些题目可以帮助面试者熟悉常见的面试题型、巩固基础知识、提升编程能力,为应对面试提供了很好的准备。然而,还需注意不仅仅局限于做题,理解背后的原理和思想同样重要,以便能够在面试时灵活运用和展示自己的能力。 阅读详情

相关推荐

win2012没有远程桌面授权服务器可以提供许可证 如何远程

如果远程windows服务器时,提示“没有远程桌面授权服务器可以提供许可证 如何远程”,先通过以下方式进行强制登录,然后在对服务器进行设置即可,延期使用。 强制登录服务器方式; 1、运行—输入:mstsc /admin /v ip:端口 回车即可 2、进入远程桌面,输入 ip:端口 /admin 例如:mstsc /admin /v 192.168.0.131:23568 进入服务器以后,按照以下步骤进行设置即可: ...

蜗牛快爬 1万+

升序数组中查找两个数,使得它们的和正好是输入的那个数字

微软面试题,难度系数低,题目描述如下: 题目:输入一个已经按升序排序过的数组和一个数字,  在数组中查找两个数,使得它们的和正好是输入的那个数字。  要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。  例如输入数组1、2、4、7、11、15 和数字15。由于4+11=15,因此输出4 和11。  逻辑分析: 1、针对一个元素相对少的数组,第一想

pediy_yuhan的专栏 1833

Amos实战:如何用Bootstrap法检验中介效应?附完整操作步骤

本文详细介绍了如何使用Amos软件通过Bootstrap法检验中介效应,包括模型设定、参数配置和结果解读。Bootstrap方法因其不依赖正态分布假设、统计功效高等优势,成为中介效应分析的首选方法。文章提供了完整的操作步骤和实用建议,帮助研究者准确评估变量间的中介作用机制。

zz67890的博客 1437

【算法10】在升序数组中查找和等于给定值的两个数

【题 目】输入一个已经按升序排列的数组,一个给定的数字,在数组中查找两个数,使得它们的和等于给定的数字。要求时间复杂度为O(n),如果存在多对满足条件的数字对,只给出一对即可。例如:输入数组『1,2,4,7,11,15』,给定一个数字15,那么输出应该为『4,11』. 【思路1】我们先不考虑时间复杂度为O(n),按照最直观的思路来考虑,容易想到,我们一次固定数组中的一个数字,然后遍历这个...

weixin_30835933的博客 482

从零构建AI Agent集群:Docker Compose与Nginx部署实战

在AI应用开发领域,微服务架构和容器化部署已成为提升开发效率和系统可维护性的关键技术。Docker Compose作为容器编排工具,能够将多个独立服务(如Node.js、Python应用)及其依赖(数据库、缓存)封装在隔离环境中,并通过统一配置文件定义服务间的网络与依赖关系,实现一键启停。Nginx作为反向代理,则提供了统一的网络入口、请求路由和负载均衡能力,是构建高可用Web应用的基石。这种组合技术方案的价值在于,它能将复杂的AI系统(如工作流引擎、对话Agent、技能库)的部署运维复杂度大幅降低,使得开

weixin_27028523的博客 638

Visual Studio 6.0 镜像下载全指南:从企业版到中文版

本文提供Visual Studio 6.0企业版和中文版的镜像下载全指南,包括详细版本解析、已验证的下载链接及校验信息。针对现代系统的安装技巧和兼容性处理方案,帮助开发者高效获取并运行这一经典开发工具,特别适合维护遗留系统的专业人员。

weixin_33712987的博客 969

找出升序数组中和为给定值的两个数字

描述: 输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。如果有多对数字 的和等于输入的数字,输入任意一对即可。 例如输入数组1、2、4、7、11、15 和数字15。由于4+11=15,因此输出4和11。 分析: (1)如果我们不考虑时间复杂度,最简单想法莫过于先在数组中固定一个数字,再依次判断数组中剩下的n-1个数字与它的和是不是等于输入的

lanximu的专栏 1960

unity中判断是否联网,判断网络状态的两种方式

unity中判断是否联网,判断网络状态的两种方式

wla2996gpy032的博客 1876

在升序数组中查找两个数,使得它们的和正好是输入的那个数字

题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。 #include "stdio.h" #include "stdlib.h" //Refe

zhouzihan520xj的专栏 752

ue 蓝图 c++ websocket 事件回调

ue 蓝图 c++ websocket 事件回调

jacke121的专栏 166

GEE:基于MODIS数据计算NDVI时间序列,并使用Savatsky-Golay(SG)滤波器对其进行平滑处理

优快云@_养乐多_本文将介绍如何在 Google Earth Engine (GEE) 平台中,使用 MODIS 数据计算 NDVI 时间序列,并对该数据集应用 Savitzky-Golay 滤波器,得到了一个新的平滑后的数据集。Savitzky-Golay 滤波器可以有效地去除信号中的噪声,并平滑信号的变化。该方法可以扩展到基于 MODIS 数据计算的任何指数或者波段。

养乐多的博客 1422

给定升序数组,找到两个数使他们之和等于目标数

给定升序数组,找到两个数使他们之和等于目标数 例如: 给定数组[2,4,7,9],找到两个数使他们之和等于9. 返回[1,3]。 使用“左右指针”,往中间靠拢。 代码: public static int[] twoSum(int[] source, int target){ int left = 0;//左边指针起始位置 int right = source.length-1;//右边指针起始位置 while(left<right){

weixin_45732391的博客 706

4.Simulink基础建模操作——加减乘除运算

加减乘除运算

FPGA/MATLAB学习教程/源码/项目合作开发 9549

剑指offer/Leecode思路及代码汇总(python)

以牛客网题号为准 JZ01-09:

qq_41105449的博客 2357

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

剑指offer题型汇总及个人建议

目录考点分类难度分类全部题解链接建议感想 考点分类 我自己的理解,不喜勿喷。 链表: 二叉树: 排序: 搜索: 数学逻辑: 字符串: 数组: 难度分类 本身牛客网的难度等级我感觉其实不是很合理,有时候他标的难题反而简单,中等题反而会卡我好久,下面是我列出来的难度分类。不喜勿喷。 简单: 中等: 较难: 困难: 全部题解链接 剑指offer(01-03)题解 剑指offer(04-06)题解 剑指offer(07-09)题解 剑指offer(10-12)题解 剑指offer(13-15)题解 剑指offer(

lovely__RR的博客 1605

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

《剑指offer》面试题41/42——和为s的两个数字VS和为s的连续正数序列(C++代码实现)

和为s的两个数字VS和为s的连续正数序列 1. 和为s的两个数字; 1)思路: 假设数组升序排列: 定义两个指针min 和max; 如果这两个指针指向的数字等于sum,则找到; 如果和小于sum,则将min向右移; 如果和大于sum,则将max向左移。 2)代码: #include &amp;amp;amp;lt;iostream&amp;amp;amp;gt; #include&amp;amp;amp;lt;vector&amp;amp;amp;

zhenaoxi1077的博客 605

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

剑指offer 目录

剑指offer 目录 Q 18_1:O(1)删除单链表中结点 Q18_2:删除值重复出现的结点

qq_35941161的博客 438

剑指offer

​一刷 剑指offer 记录

dwtianwen的博客 1104

剑指offer 面试题41 递增数组中和为s的两个数字 | 和为s的连续整数序列

#include using namespace std; void TwoNum(int* num,int len,int s){ if(!num||len<2) return; int *small=num,*large=num+len-1; while(small<large){ if(*small+*large==s){ cout<<*small<<' '<<*lar

shidalong2014的专栏 533

剑指Offer面试题41:求和为s的两个数字;求和为s的连续正数序列 Java实现

题目一:输入一个递增排序的数组和一个数字s,在数组中找两个数,使得他们的和刚好是s.如果有多对数字的和等于s,则输出任意一对即可。例如,输入数组{1,2,4,7,11,15}和数字15,则输出4和11(4+11=15)。 算法分析: 首先,我们会想到在数组中固定一个数字,再一次判断数组中其余n-1个数字与它的和是不是等于S。不过这个方法的时间复杂度为O(n^2),会不会有更快的方法?

做一名努力的通信程序员 1972

牛客剑指offer笔记(下)

文章目录35.在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%100000000736.输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的37.统计一个数字在升序数组中出现的次数。38.输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的

qq_44090228的博客 747

刷题笔记(剑指offer-67题,Java版)

本文包括刷题的总体思想要义、以及剑指offer67题的全部题解

晋青杨 1375

python 剑指offer习题集(持续更新中)

剑指offer习题集

qq_45894553的博客 287

【题解】剑指offer

剑指offer题解

uytguytgf的博客 497

剑指offer不用加减乘除做加法_剑指offer题型汇总及个人建议

因为公众号里面链接只能是公众号内部的链接地址,所以建议大家点击 查看原文 去我的csdn博客查看该文章,里面相应题目的链接都已经匹配好,可以直接点击查看题目以及相应的题解.1.考点分类我自己的理解,不喜勿喷。1.1 链表从头到尾打印链表链表中倒数第k个结点反转链表复杂链表的复制两个链表的第一个公共结点孩子们的游戏链表中环的入口结点删除链表中重复的结点1.2二叉树重建二叉树树的子结构二叉树...

weixin_39782500的博客 100

【LeetCode 剑指Offer】学习记录

注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …, a[n-2]]。给你一个可能存在 重复 元素值的数组 nums ,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。若旋转 4 次,则可以得到 [4,5,6,7,0,1,4]若旋转 7 次,则可以得到 [0,1,4,4,5,6,7]

熬夜不秃头的博客 1617
上一篇: 【笔试题】拼多多笔试
下一篇: 【JAVA开发之架构专题】10.NIO通信架构
王小禾
博客等级 码龄11年 80粉丝 291原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值