当前位置:网站首页>数组与字符串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};
}
}
边栏推荐
- 增强光学系统设计 | Zemax 全新 22.2 版本产品现已发布!
- 设备树(devicetree)-dts语法
- 自监督论文阅读笔记Reading and Writing: Discriminative and Generative Modelingfor Self-Supervised Text Recogn
- KASLR-内核地址空间布局随机化
- 电子元器件和电子元件的区别有那些?
- g++ parameter description
- Qemu 搭建Armv8 平台
- Eight, the difference between the interface of the abstract class
- ZEMAX | 如何倾斜和偏心序列光学元件
- 虚拟地址空间布局
猜你喜欢

自监督论文阅读笔记Index Your Position: A Novel Self-Supervised Learning Method for Remote Sensing Images Sema

对象の使用

block底层探索

进程间通信IPC - 信号量

Convolutional Nerual Nertwork(CNN)

二叉树常见的问题和解决思路

ZEMAX | 探究 OpticStudio 偏振分析功能

关于梯度下降法的一些优化方法

IPC通信 - 管道

自监督论文阅读笔记 Ship Detection in Sentinel 2 Multi-Spectral Images with Self-Supervised Learning
随机推荐
自监督论文阅读笔记 TASK-RELATED SELF-SUPERVISED LEARNING FOR REMOTE SENSING IMAGE CHANGE DETECTION
ZEMAX | How to rotate any element around any point in space
cb板上常用的电子元器件都有哪些?
servlet学习(七)ServletContext
自监督论文阅读笔记 Self-supervised Learning in Remote Sensing: A Review
VS2022 encapsulation under Windows dynamic library and dynamic library calls
五、int和Integer有什么区别?
MATLAB自带的dwt2和wavedec2函数实现基于小波变换的自适应阈值图像边缘检测
【七夕特效】 -- 满屏爱心
Automatic ticket issuance based on direct reduction of China Southern Airlines app
梯度下降、反向传播
常见的电子元器件分类介绍
double型数据转字符串后通过MCU串口发送
enum和enum class的区别
损失函数(第五周)
浮点型数据在内存中存储的表示
Convolutional Nerual Nertwork(CNN)
ZEMAX | 在OpticStudio中建立扩增实境(VR)头戴式显示器
MySql【后面附有练习题】
虚拟地址空间布局