当前位置:网站首页>数组与字符串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};
}
}
边栏推荐
- A.1#【内存管理】——1.1.2 zone: struct zone
- pandoc -crossref插件实现markdwon文档转word后公式编号自定义
- 在大程序中怎么样显示LED点阵
- VS2022 encapsulates static libraries and calls static libraries under window
- 进程间通信IPC - 信号量
- 滚动条 scrollbar 和scrollbar-thumb 样式
- Delightful Nuxt3 Tutorial (2): Build a Blog Quickly and Easily
- SQLMAP介绍及使用
- 【第三周】ResNet+ResNeXt
- AI智能剪辑,仅需2秒一键提取精彩片段
猜你喜欢

VS2022 encapsulates static libraries and calls static libraries under window

自我监督学习和BERT模型

Dynamic adjustment subject web system?Look at this one is enough

MySql的Sql语句的练习(试试你能写出来几道呢)

自监督论文阅读笔记 Incremental-DETR:Incremental Few-Shot Object Detection via Self-Supervised Learning

自监督论文阅读笔记 Self-Supervised Visual Representation Learning with Semantic Grouping

进程间通信IPC - 信号量

自监督论文阅读笔记 Ship Detection in Sentinel 2 Multi-Spectral Images with Self-Supervised Learning

window下VS2022封装静态库以及调用静态库

SolidWorks 操作视频 | 隐藏高手必备工具Defeature,让设计隐藏更彻底
随机推荐
KASLR-内核地址空间布局随机化
g++参数说明
西塞罗 论老年
Phase Vocoder的补充完善,Matlab音频变速不变调、变调不变速
自监督论文阅读笔记Reading and Writing: Discriminative and Generative Modelingfor Self-Supervised Text Recogn
自监督论文阅读笔记 Self-supervised Label Augmentation via Input Transformations
深度学习理论课程第八、九、十章总结
JS--正则表达式
【第一周】深度学习和pytorch基础
虚拟地址空间布局
double型数据转字符串后通过MCU串口发送
基于南航app直减自动出票
opencv
ucos任务调度原理
内网渗透之PPT票据传递攻击(Pass the Ticket)
ZEMAX | 如何创建简单的非序列系统
自监督论文阅读笔记 TASK-RELATED SELF-SUPERVISED LEARNING FOR REMOTE SENSING IMAGE CHANGE DETECTION
001_旭日X3派初探:开箱测试
NIO知识汇总 收藏这一篇就够了!!!
opencv透视变化