题目地址(167. 两数之和 II - 输入有序数组)

https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted/

题目描述

给定一个已按照 升序排列  的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例 1:输入:numbers = [2,7,11,15], target = 9
输出:[1,2]
解释:2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。示例 2:输入:numbers = [2,3,4], target = 6
输出:[1,3]示例 3:输入:numbers = [-1,0], target = -1
输出:[1,2]提示:2 <= numbers.length <= 3 * 104
-1000 <= numbers[i] <= 1000
numbers 按 递增顺序 排列
-1000 <= target <= 1000
仅存在一个有效答案

前置知识

  • 整型数组的定义
int[] answer = new int[2];  // 定义特定长度的整型数组

思路

  • 思路一:暴力枚举,利用双重for循环遍历。
  • 思路二:使用双指针,一个指针指向值较小的元素,一个指针指向值较大的元素。指向较小元素的指针从头向尾遍历,指向较大元素的指针从尾向小指针位置遍历。
  • 思路三:利用数组升序的特性采用“控制范围+双指针”

代码

失败——第一次提交——暴力枚举(Java Code)

失败原因:超出时间限制,时间复杂度O(n2)O(n^2)O(n2)

复杂度分析

令 n 为数组长度。

  • 时间复杂度:O(n2)O(n^2)O(n2)
  • 空间复杂度:O(1)O(1)O(1)

成功——第二次提交——双指针遍历(Java Code)

class Solution {public int[] twoSum(int[] numbers, int target) {int length = numbers.length;    // 数组长度int sum;        // 定义求和参数int[] answer = new int [2];      // 结果列表for(int i=0; i<length; i++) {for(int j=length-1; j>i; j--) {sum = numbers[i] + numbers[j];if(sum == target) {answer[0] = i+1;answer[1] = j+1;}}}return answer;}
}


复杂度分析

令 n 为数组长度。

  • 时间复杂度:O(nlogn)O(nlogn)O(nlogn)
  • 空间复杂度:O(1)O(1)O(1)

成功——第三次提交——控制范围+双指针(Java Code)

class Solution {public int[] twoSum(int[] numbers, int target) {// if(numbers == null) { return null;}int left = 0, right = numbers.length-1;while(left < right) {int sum = numbers[left] + numbers[right];if(sum == target) {return new int[]{left+1, right+1};} else if (sum > target) {right--;} else {left++;}}return null;}
}


复杂度分析

令 n 为数组长度。

  • 时间复杂度:O(n)O(n)O(n)
  • 空间复杂度:O(1)O(1)O(1)

LeetCode167 | Two Sum II - Input array is sorted (Easy)相关推荐

  1. LeetCode 167. Two Sum II - Input array is sorted

    题目 : Given an array of integers that is already sorted in ascending order, find two numbers such tha ...

  2. C#LeetCode刷题之#167-两数之和 II - 输入有序数组(Two Sum II - Input array is sorted)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3903 访问. 给定一个已按照升序排列 的有序数组,找到两个数使得 ...

  3. 167. Two Sum II - Input array is sorted (C, C++, Python)

    本文讲述了Array类中第167个问题的几种解法,实现语言包括C,Python以及C++. 问题: Given an array of integers that is already sorted ...

  4. LeetCode之Two Sum II - Input array is sorted

    1.题目 Given an array of integers that is already sorted in ascending order, find two numbers such tha ...

  5. leetcode python3 简单题167. Two Sum II - Input array is sorted

    1.编辑器 我使用的是win10+vscode+leetcode+python3 环境配置参见我的博客: 链接 2.第一百六十七题 (1)题目 英文: Given an array of intege ...

  6. [LeetCode By Python]167. Two Sum II - Input array is sorted

    题目: Given an array of integers that is already sorted in ascending order, find two numbers such that ...

  7. 【LeetCode 剑指offer刷题】数组题2:57 有序数组中和为s的两个数(167 Two Sum II - Input array is sorted)...

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) 57 有序数组中和为s的两个数 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是 ...

  8. 有序数组求和问题(Two Sum II - Input array is sorted)

    有序数组求和问题 一.学习要点: 1.c++中参数引用的应用,有一种c语言中传值的感觉:声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身 ...

  9. 167. Two Sum II - Input array is sorted 两数之和 II - 输入有序数组

    Title 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2. 说明: ...

最新文章

  1. webpack 采坑(CleanWebpackPlugin 插件报错: CleanWebpackPlugin is not a constructor ;)
  2. mysql+PHP源码编译安装
  3. nagios监控web/mysql多角度实战分享(一)
  4. vuex 的 action 传参问题
  5. html 控件命名规则,前端组件命名规则
  6. DHCPv6(dhcpv6配置)
  7. 学习《华为基本法》(6):公司的成长
  8. (网络安全数据集一)美国国家安全漏洞库 NVD-CVE信息解读 和常用漏洞库
  9. 【Day4.5】走人行天桥去百丽宫海生馆
  10. Clion 2021解决中文输出乱码问题-亲测有效
  11. 阿里本地生活再出发:口碑入高德,备战美团、抖音
  12. OpenCV Gabor滤波器实现纹理提取与缺陷分析
  13. 安卓美化——添加下拉菜单图片或下拉菜单透明
  14. 学生查分系统该怎么制作?
  15. 总投资2185.38亿元,澜沧江水电站传来好消息
  16. FPGA — Overview
  17. E-puck2机器人系列教程
  18. GitHub优秀的Android开源项目
  19. 亚太融媒+ |「APEC投资+/产业+」:私募基金与产业基金 | 稳略产业基金观察
  20. 基于QML的图片浏览器

热门文章

  1. 魔兽争霸III 1.20, 1.21 1.22 需要特定语言版本之Window 解决办法
  2. android 右上角 xml,android状态栏右上角增加图标的方法
  3. oracle时间戳效率问题,时间戳问题 - Oracle开发 - ITPUB论坛-中国专业的IT技术社区...
  4. 计算球的体积(信息学奥赛一本通-T1030)
  5. LateX在windows中运用MiKTeX
  6. 14 SD配置-企业结构-分配-分配销售组织-分销渠道-工厂
  7. 计算机网络 socket,[计算机网络]简单聊聊套接字 Socket
  8. Windows动态定义模板类对象
  9. vue 取数组第一个值_Vue如何循环提取对象数组中的值
  10. cp 强制覆盖_Office 365办公本组CP,软硬件同步提高效率