【剑指offer】 --- 和为S的两个数

剑指offer ——输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 运行结果:分析:先选定第一个数字,然后将后面的数字依次遍历求和,并与需要的数字比较,需要n-1次,如果第一个数字不行,选择第二个,依次遍历求和。。。。需要n^2次,时间复杂度比较高,但也是可以的,在面试中,如果没有更好的办法写这个也是可以的,毕竟要比交白卷好得多,这里不展示此代码。下面将一种简单的方法:先看题目要求:输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果... 阅读详情

题目描述


        输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。


思路

        由于是一个递增数组,所以我们可以采取两边向中间逼近的方式解决这个问题;

        ①:使用这个指针,一个i,一个j,i指向头,j指向尾;

        ②:如果a[i]+a[j]>S,那么就j--;如果a[i]+a[j]<S,那么就i++;如果a[i]+a[j]=S,保存a[i],a[j];

        ③:因为这个题是输出乘积最小的,在递增数组中,相距越远成绩越小,直接break即可;

代码实现

 public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
        if(array.length<2){
            return list;
        }
        ArrayList<Integer> list = new ArrayList<Integer>();
        int i = 0;
        int j = array.length-1;
        while(i<j){
            //第一次找到就break,此时乘积最小
            if(array[i]+array[j] == sum){
                list.add(array[i]);
                list.add(array[j]);
                break;
            }
            else if(array[i]+array[j]>sum){
                j--;
            }else{
                i++;
            }
        }
        return list;
    }

 

wifi/BT芯片RTL8723DS驱动移植和测试之一wifi篇 本文主要介绍如何在stm32mp157中移植并测试芯片RTL8723DS的wifi功能。 阅读详情

相关推荐

Python表白代码:“ 星光月夜烟花皆归你,我也归你”(满天烟花盛开、附番外玫瑰)

导语 "慢品人间烟火色 闲观人间岁月长" ———致自己​​​ ​ ???? 遇见我以后,我们的故事就开始了,愿你历经山河,仍觉得人间值得????。 ​ 星光月夜烟花皆归你,我也归你。关于烟花????大家都​知道多少?有多少表白故事情节都发生在烟 花下,想必木木子????不用说大家也知道叭~​​ 今天这则小短文就是关于烟花的故事!你准备好跟我一起进入烟花的世界了嘛? ​正文 “每一句文案,都有一个故事,你仔细听” ​ 1)环境安装???? 准备好:.

顾木子吖的博客 5万+

剑指offer——和为S的两个数

剑指offer——和为S的两个数 【题目描述】 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。 【解题思路】 解题思路1 要求两个数的和是否为S,可以用S减去一个较小的值,看另外一个元素是否在数组中。 因此,遍历一遍数组,将所有元素存到map,或者set中,可以...

ma_ke_xin的博客 188

基于PyQt5的ROS移动机器人的人机交互UI界面

每次做实验的时候,手动rosrun,roslaunch太过麻烦,通过ui界面的话,只需要点点按钮就可以啦 ros_car_py包括运动,建图,导航,ui界面的程序全部打包上传,相互依赖关系见ros_car_py包。 import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets imp...

工大机器人工作室 7366

剑指Offer: 和为S的两个数

剑指Offer: 和为S的两个数 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的 样例 对应每个测试案例,输出两个数,小的先输出 算法1 遍历 由于数组是递增排列的,两个数值相隔越大, 乘积越小,所以只需要找出一次满足条件的一个偶对即可。 时空分析 时间复杂度分析:遍历一遍数组 O(n) , 每次find...

Erice_s的博客 163

H3C无线控制器二层注册实战:从零配置到AP上线全流程(附常见问题排查)

本文详细解析了H3C无线控制器二层注册的全流程,从网络基础准备、AC核心配置到AP上线,重点阐述了CAPWAP隧道建立的关键步骤。文章提供了清晰的典型配置示例,并针对AP无法上线、状态异常等常见问题,给出了六种典型故障现象的排查思路与解决命令,帮助网络工程师快速定位并解决问题。

weixin_29214199的博客 545

OpenClaw 多机器人多 Agent 模式:打造你的 AI 助手团队

OpenClaw多Agent模式为企业提供高效的AI助手团队解决方案。通过创建4个独立的飞书机器人(主助理、内容创作、技术开发、AI资讯),每个连接专属Gateway和Agent模型(如Claude Opus/Sonnet、Gemini 2.5),实现专业分工。相比单Agent模式,多Gateway架构具有配置清晰、互不干扰、无需手动切换等优势。系统采用Profile隔离机制,各Agent拥有独立配置和端口。部署过程包括创建机器人应用、配置Agent、运行自动化脚本等步骤,支持私聊或群组@使用。日常提供状态

Maynor的博客 5099

剑指offer 和为S的两个数

题目描述: 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 解题思路: 设置两个指针start=0,end=array.length-1,在start<end的情况下,如果两个下标的数之和大于sum,则end--,如果小于sum则start++,如果相等,则将这两个数字返回,同时我们知道和相同的两个数,差...

leo_weile的博客 166

BPC坏点矫正

whatis the Bad Pixel? 坏点为死点,也就是基本不随照度变化呈现光电线性转换的关系。表现为暗态常亮,亮态常暗。 坏点分类:静态坏点:亮坏点,暗坏点。 动态坏点:在一定像素范围内,该点表现正常,而超过这一范围,该点表现的比周围像素要亮。与sensor ...

camerall 1万+

剑指offer 和为s的两个数

剑指offer题型分类及各题的代码及解题思路 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。 分析: 数列满足递增,设两个头尾两个指针i和j, 若ai + aj == sum,就是答案(相差越远乘积越小) 若ai + aj > ...

请叫我皮皮虾的博客 177

智能合约监控告警:提示工程架构师用AI Prompt实现精准预警

当AI大模型(尤其是代码理解模型如CodeLlama、GPT-4 Code)与区块链数据结合,智能合约监控迎来范式革新。AI模型如何精准理解智能合约的业务特殊性?如何避免"AI幻觉"导致的误报?如何让模型学会区分"正常异常"与"攻击前兆"?答案藏在"提示工程"(Prompt Engineering)中。理解特定智能合约的业务逻辑(如DeFi协议的清算机制、NFT的铸造规则)识别复杂的攻击模式(如重入攻击的调用链特征、闪电贷的套利路径)结合链上链下数据进行多维度推理(如关联价格波动与异常交易)

AI架构全栈开发实战笔记 1011

【华为OD机试真题 新系统】1010、魔法阵的能量收集 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

【华为OD机试真题 新系统】1010、魔法阵的能量收集 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2026e卷,od机试,2026E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2026华为od,如何备战华为

KJ.JK 1072

【力扣-算法】剑指offer57.和为s的两个数

left + right > target 时,需要去掉两者相加中大的值,right向左移动一次(right左边的指都比right下因为数组时递增的)根据题目得知,输入的是一个递增的数组,也就是最左边的元素最小,最右边的元素最大,需要数组中任意两个元素和等于target,返回元素值即可。left + right < target时,需要去掉两者相加中小的值,right向右移动一次。left + right = targe,输出left和right下标的值。利用循环实现题目解析中所说的。

shi_r0_ha的博客 299

基于MATLAB/Simulink平台进行新能源微电网运行控制的建模与仿真

新能源微电网是现代电力系统的重要组成部分,能够有效整合分布式能源(如光伏、风力发电)和储能设备,实现局部区域内的能源高效利用。微电网的运行控制涉及多源能量管理、负荷平衡以及并网/孤岛模式切换等关键问题。基于MATLAB/Simulink平台进行新能源微电网运行控制的建模与仿真,可以帮助研究者验证控制策略的有效性,并优化系统的动态性能和经济性。本项目旨在构建一个完整的新能源微电网模型,包括电源模块、储能模块、负荷模块以及控制器模块,并通过仿真分析其运行特性。

xiaoheshang_123的博客 421

【剑指offer】和为S的两个数

题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的 思路: 方法一:粗暴遍历法 # -*- coding:utf-8 -*- class Solution: def FindNumbersWithSum(self, array, tsum): # write code here ...

yingzoe的博客 130

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

剑指offer-57:和为S的两个数

这道题题目为:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得他们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。 解题思路分为三个步骤: (1)对于已经排好序的数组,先在数组里随机选择两个数字,如果它们的和正好等于s,则输出这两个数字。 (2)如果随机选择的两个数字和小于s,可以选择较小数字后面比它大的数字。 (3)如果随机选择的两个数字和大于s,可以选择较大数字前面比它小...

qq_38819156的博客 181

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

剑指offer-和为S的两个数

和为S的两个数 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出 解题思路 这道题比较简单,双指针low和high分别指向数组头和尾,计算arr[low]+arr[high]。low和high离得越远,乘积越小,所以找到第一对满足条件的数返回就行了。 循环条件:lo...

adrenaline is zzz 117

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

剑指offer和为s的两个数

题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: import java.util.ArrayList; public class FindNumbersWithSum { public static void main(String[] args) { int[...

qq_38846089的博客 168

剑指Offer-39——和为s的两个数

题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。

H1517043456的博客 210

和为s的两个数(剑指offer-57)

1、题目描述 找出一个递增数组中两个和为s的数字,比如给定数组:{ 1,2,4,7,11,15 } 和数字s=15,则找出的数字为11和4。 2、解题思路 (1)暴力解法: 时间复杂度为O(n^2),面试通不过滴。 (2)双指针法: 使用两个指针,一个从头开始遍历,一个从尾开始遍历,如果两个指针所指向的值的和等于s,则找到这两个数。如果指向值的和大于s,则头...

蓬莱道人的博客 262

《剑指 Offer》——42、和为 S 的两个数

1. 本题知识点 数学,双指针 2. 题目描述 输入一个递增排序的数组和一个数字 S,在数组中查找两个数,使得他们的和正好是 S,如果有多对数字的和等于 S,输出两个数的乘积最小的。 3. 解题思路 使用双指针,一个指针指向元素较小的值,一个指针指向元素较大的值。指向较小元素的指针从头向尾遍历,指向较大元素的指针从尾向头遍历。 如果两个指针指向元素的和 sum < S,移动较小的元素指针,使 sum 变大一些。 如果两个指针指向元素的和 sum > S,移动较大的元素指针,使 sum

bm1998 195

剑指offer之和为S的两个数

题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。 tips:设置头尾两个指针,根据两指针和进行一次遍历移动指针即可。 # -*- coding:utf-8 -*- class Solution: def FindNumbersW...

Rain 169

【剑指offer】57 和为s的两个数(拒绝暴力)

面试题57. 和为s的两个数字 难度简单18 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[2,7] 或者 [7,2] 示例 2: 输入:nums = [10,26,30,31,47,60], target ...

爱科比的博客 192

剑指offer - 和为s的两个数

题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 思路 双指针。这个题和剑指offer的第一个题很像。第一个题是在一个二维的排序矩阵中找到target,也是用的双指针 class Solution: def FindNumbersWithSum(self, array, tsum): ...

qq_22498427的博客 133

剑指offer(四十二)——和为S的两个数

剑指offer(四十二)——和为S的两个数 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 题解 这道题一开始被误导了,想通了就比较简单了。这里面给出了两个限制条件来查找目标元素:(1)和为S;(2)乘积最小。仔细想想,在和相同的情况下,两数差值越大,积不就越大?问题就迎刃而解了,数组是有序的,那么首尾两个...

ZJX_103的博客 263

剑指offer_ 和为S的两个数

题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。 题目所给数组为递增排序,所以设置两个指针,分别从头和尾向中间逼近,满足和为sum的两个数之间的距离越远,则其乘积越小,复杂度O(n)。 代码如下: vector<int&gt...

zlb666的博客 173
上一篇: 【剑指offer】--- 判断一颗二叉树是否为平衡二叉树
下一篇: 【剑指offer】 --- 二叉树的层序遍历
Beat_Boxer
博客等级 码龄9年 18粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值