当前位置:网站首页>数组与字符串13-两数之和等于目标数
数组与字符串13-两数之和等于目标数
2022-08-03 05:25:00 【花开花落夏】
两数之和等于目标数
一 题目
源自leetcode
给定一个已按照 非递减顺序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。
提示:你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。
二 解题
可以使用暴力破解来求此题。对于numbers为[2,7,11,15],元素不重复的两数有:(2,7), (2,11), (2,15), (7,11), (7,15), (11,15).由于要求1 <= answer[0] < answer[1] <= numbers.length ,因此两个数我们按从小到大的顺序来写。其中,因为numbers为非递减顺序排列,所以结果能取到的最大值为target-numbers[0],因为numbers[0]为最小的值。
代码:
class Solution {
public int[] twoSum(int[] numbers, int target) {
int[] result = new int[2];
int max = target - numbers[0];
boolean flag = false;
for(int i =0;i<numbers.length-1;i++){
for(int j = i+1;j< numbers.length;j++){
if(numbers[j]>max){
break;
}else if(numbers[i]+numbers[j]==target){
//题目要求index从1开始
result[0]=i+1;
result[1]=j+1;
flag=true;
break;
}
}
if(flag){
break;
}
}
return result;
}
}
三 优化
可以使用双指针来简化操作,使用两个指针left与right,初始化时left=0,指向最小值,right=numbers.length-1,指向最大值。由于数组为非递减顺序排列,所以当numbers[left]+numbers[right]>target时,right–,找更小的值。numbers[left]+numbers[right]<target时,left++,找更大的值。
class Solution {
public int[] twoSum(int[] numbers, int target) {
int left = 0,right = numbers.length-1;
while (left<right){
if(numbers[left]+numbers[right]==target){
return new int[]{
left+1,right+1};
}else if(numbers[left]+numbers[right]>target){
right--;
}else{
left++;
}
}
return new int[]{
-1,-1};
}
}
边栏推荐
猜你喜欢

自监督论文阅读笔记 S3Net:Self-supervised Self-ensembling Network for Semi-supervised RGB-D Salient Object Det

ZEMAX | 如何创建简单的非序列系统

How the world's leading medical technology company maximizes design productivity | SOLIDWORKS Product Exploration

网络间通信

softmax和最大熵

卷积神经网络入门

电子元器件之电子变压器可分为哪几类?

自监督论文阅读笔记DisCo: Remedy Self-supervised Learning on Lightweight Models with Distilled Contrastive

opencv透视变化

cb板上常用的电子元器件都有哪些?
随机推荐
MATLAB给多组条形图添加误差棒
深度学习理论课程第八、九、十章总结
IPC通信 - 管道
AI智能剪辑,仅需2秒一键提取精彩片段
How the world's leading medical technology company maximizes design productivity | SOLIDWORKS Product Exploration
增强光学系统设计 | Zemax 全新 22.2 版本产品现已发布!
采用Trench肖特基二极管,实现功率密度的显著提升
【七夕特效】 -- 满屏爱心
西塞罗 论老年
Hook初探索
自监督论文阅读笔记 DetCo: Unsupervised Contrastive Learning for Object Detection
[XSS, file upload, file inclusion]
队列方法接收串口的数据
Eight, the difference between the interface of the abstract class
进程间通讯 (IPC 技术) - 信号
神经网络之感知机
JSP的基本使用
自监督论文阅读笔记 S3Net:Self-supervised Self-ensembling Network for Semi-supervised RGB-D Salient Object Det
Typora
Makefile自动推导的简单例程