剑指Offer-42.和为S的两个数字(C++/Java)
题目:
输出描述:
对应每个测试案例,输出两个数,小的先输出。
分析:
因为数组时有序的,我们可以使用两个指针,分别指向数组的第一个元素和最后一个元素,判断两个数的和与S的关系。
如果相等,那么这两个数字便是最后的答案,按序输出即可。
如果两数和大于S的话,我们需要调整后面的指针所指向的元素,将它修改为前一个元素,以保证有可能让两个数的和等于S。
同理,如果和小于S,我们就要调整前面的指针,将它后移一个元素。
程序:
C++
class Solution {
public:
vector<int> FindNumbersWithSum(vector<int> array,int sum) {
if(array.size() == )
return res;
int left = ;
int right = array.size()-;
while(left < right){
if(array[left] + array[right] == sum){
//res.push_back({array[left], array[right]});
res.push_back(array[left]);
res.push_back(array[right]);
break;
}
else if(array[left] + array[right] > sum){
right--;
}
else{
left++;
}
}
return res;
}
private:
vector<int> res;
};
Java
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
if(array == null || array.length == 0)
return res;
int left = 0;
int right = array.length - 1;
while(left < right){
if(array[left] + array[right] == sum){
res.add(array[left]);
res.add(array[right]);
break;
}
else if(array[left] + array[right] > sum){
right--;
}
else{
left++;
}
}
return res;
}
private ArrayList<Integer> res = new ArrayList<>();
}
剑指Offer-42.和为S的两个数字(C++/Java)的更多相关文章
- 剑指Offer 42. 和为S的两个数字 (其他)
题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输出. 题目 ...
- [剑指Offer] 42.和为S的两个数字
题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输出. [思 ...
- [剑指Offer]41.和为S的两个数字 VS 和为S的连续正数序列
[剑指Offer]41 和为S的两个数字 VS 和为S的连续正数序列 Leetcode T1 Two Sum Given an array of integers, return indices of ...
- 剑指 Offer 57. 和为s的两个数字 + 二分法 + 双指针
剑指 Offer 57. 和为s的两个数字 Offer_57 题目详情 使用二分法 package com.walegarrett.offer; /** * @Author WaleGarrett * ...
- 力扣 - 剑指 Offer 57. 和为s的两个数字
题目 剑指 Offer 57. 和为s的两个数字 思路1(哈希表) 这题首先想到的是使用两个for遍历,查找是哪两个相加等于target,但是时间复杂度确实\(O(N^2)\),时间复杂度太高,因此我 ...
- 【剑指Offer】和为S的两个数字 解题报告(Python)
[剑指Offer]和为S的两个数字 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews ...
- 《剑指offer》和为S的两个数字
本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:
- 【Java】 剑指offer(57-1) 和为s的两个数字
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它 ...
- Go语言实现:【剑指offer】和为S的两个数字
该题目来源于牛客网<剑指offer>专题. 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 对应每个测试案 ...
- 剑指offer系列45---和为s的两个数字
[题目]输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S, package com.exe9.offer; /** * [题目]输入一个递增排序的数组和一个数字S,在数组中 ...
随机推荐
- Cisco packet tracer 的手动添加模块
在PacketTracer 里面,路由器都是基本配置,这和真实设备是相同的 基本配置里面2620只有一个以太网口: 而2621和2811在背板上有两个以太网接口 所以,你在show run里面可以看到 ...
- 深入学习CSS3-flexbox布局
学习博客:https://css-tricks.com/snippets/css/a-guide-to-flexbox/ 学习博客:http://caibaojian.com/demo/flexbox ...
- 面试完腾讯,总结了这12道Zookeeper面试题!
前言 ZooKeeper 是一个开源的分布式协调服务,可以基于 ZooKeeper 实现诸如:数据发布/订阅.负载均衡.命名服务.分布式协调/通知.集群管理.Master 选举.配置维护,名字服务.分 ...
- 据说60%的Java程序员不明白分布式一致性?这次彻底搞懂!
前言 在计算机科学领域,分布式一致性是一个相当重要且被广泛探索与论证问题,首先来看三种业务场景. 1.火车站售票 假如说我们的终端用户是一位经常坐火车的旅行家,通常他是去车站的售票处购买车票,然后拿着 ...
- C# 中获取一个目录下的目录与文件
//获得目录下所有文件和子目录使用DirectoryInfo类的GetFileSystemInfos()方法. //获得目录下所有目录 string[] dirs = Directory.GetDir ...
- GHOST CMS - 结构 Structure
Structure Ghost主题包含静态HTML模板,这些模板使用helper类从站点输出数据,并使用定制的CSS进行样式化 A Ghost theme contains static HTML t ...
- Python代码编写规范,你真的会吗?
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:yangjiajia123456 最近两年的工作都是和运维相关,有时 ...
- TrueTime的安装、运行例程
一.前言 Truetime的安装是为了完成课程相关需求,但在安装过程中遇到一些问题,想到自己之前注册了博客所以打算把这个作为第一篇的内容.请放心这个的安装过程并不困难,可以放心食用. 二.准备 Tru ...
- Nginx在开发中常用的基础命令
场景 Ubuntu Server 16.04 LTS上怎样安装下载安装Nginx并启动: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detai ...
- SpringMVC框架之第一篇
2.SpringMVC介绍 2.1.SpringMVC是什么 SpringMVC是Spring组织下的一个表现层框架.和Struts2一样.它是Spring框架组织下的一部分.我们可以从Spring的 ...