问题

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3903 访问。

给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。

函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2

说明:

  • 返回的下标值(index1 和 index2)不是从零开始的。
  • 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。

输入: numbers = [2, 7, 11, 15], target = 9

输出: [1,2]

解释: 2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。


Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number.

The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2.

Note:

  • Your returned answers (both index1 and index2) are not zero-based.
  • You may assume that each input would have exactly one solution and you may not use the same element twice.

Input: numbers = [2,7,11,15], target = 9

Output: [1,2]

Explanation: The sum of 2 and 7 is 9. Therefore index1 = 1, index2 = 2.


示例

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3903 访问。

public class Program {public static void Main(string[] args) {int[] prices = { 2, 7, 11, 15 };var res = TwoSum(prices, 9);Console.WriteLine($"[{res[0]},{res[1]}]");Console.ReadKey();}private static int[] TwoSum(int[] numbers, int target) {int left = 0, right = numbers.Length - 1, sum = 0;//双指针法,因为原数组已经有序//所有用左右指针分别指向首和尾//根据值的比较移动指针直到相撞时为止while(left < right) {sum = numbers[left] + numbers[right];//当2个值的和大于目标值时,左移右指针if(sum > target) right--;//当2个值的和小于目标值时,右移左指针else if(sum < target) left++;//匹配目标值时,直接返回else if(sum == target)return new int[] { left + 1, right + 1 };}//找不到时返回空数组return new int[] { };}}

以上给出1种算法实现,以下是这个案例的输出结果:

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3903 访问。

[1,2]

分析:

显而易见,以上算法的时间复杂度为: 

另外,因为是有序的数组,很容易想到使用二分查找,二分查找本身的时间复杂度为:  ,考虑到还需要一个原问题规模n的外循环,所以其时间复杂度应为:  , 有兴趣的同学可以自己动手试一下。

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

  1. leetcode刷题:2.两数之和

    本篇博客介绍如何找到两数之和.获取相加的两个数获取最终target的方法. 先看如下图: 我们很容易想到暴力解法.即两次循环获取结果,第一次循环循环黑圈,我们先假定第一个黑圈中1,是我们要的数,然后接 ...

  2. 两数之和,输入有序数组 leetcode C++

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

  3. LeetCode刷题笔记——001两数之和

    题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组中同一个元素不能使用 ...

  4. 【leedcode刷题1】两数之和

    [leedcode刷题 1]两数之和 大家好,小生不才,从今天开始将自己刷题的过程记录在博客中,因为能力有限,所以如果有什么错的地方希望大家积极指正,不胜感激. 题目 给定一个整数数组 nums 和一 ...

  5. LeetCode刷题笔记- 15.三数之和

    LeetCode刷题笔记- 15.三数之和 C语言 题目 注意点 C语言 /*** Return an array of arrays of size *returnSize.* The sizes ...

  6. 【leetcode刷题】21.三数之和——Java版

    ⭐欢迎订阅<leetcode>专栏,每日一题,每天进步⭐ 一题二写,三数之和,题解四瞅五瞄六瞧,水平还七上八下九流,十分辣鸡. --leetcode此题热评 前言 哈喽,大家好,我是一条. ...

  7. 【leetcode】力扣刷题(1):两数之和(Go、Python)

    一.问题描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个 ...

  8. python【力扣LeetCode算法题库】—两数之和

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元 ...

  9. C#LeetCode刷题之#653-两数之和 IV - 输入 BST(Two Sum IV - Input is a BST)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4098 访问. 给定一个二叉搜索树和一个目标结果,如果 BST 中 ...

  10. C#LeetCode刷题之#633-平方数之和( Sum of Square Numbers)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3885 访问. 给定一个非负整数 c ,你要判断是否存在两个整数 ...

最新文章

  1. c#中对Cross-thread operation not valid错误的处理办法
  2. 批处理系统服务监控器[超牛B]
  3. python在中国的发展-未来十年Python的前景会怎样?
  4. Android --- Gradle是什么?
  5. QPW 系统管理后台用户表(tm_user_info)
  6. gridview databind 会导致页面刷新马_Innodb批量页面刷盘情况下的quot;两次写quot;
  7. LeetCode 891. 子序列宽度之和(数学)
  8. mysql重做日志与binlog日志区别_MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结...
  9. 【Mac】mac安装go
  10. 实时计算框架 Spark: Lightning-fast cluster computing
  11. Win10 Ubuntu子系统(内嵌ubuntu18.04)运行32bit Linux原生程序 解决Exec format error错误
  12. 如果可以不上班《不上班的23种活法》免费下载及经典语录
  13. AVA SE java基础 评委打分案例
  14. 批量重命名文件、图片、去除文件名括号
  15. 计算机接口时序波形图怎样看,TimeQuest就一定要搞定——看懂时序波形图
  16. db2配置、db和dbm
  17. Intellij idea使用eclipse的java代码格式化文件
  18. 7-20 打印九九口诀表 (15分) 下面是一个完整的下三角九九口诀表: 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4
  19. 阿拉伯数字转大写金额(支持简体和繁体)
  20. win10,win11后在cmd命令行输入python自动调用微软应用商店

热门文章

  1. MergeSort 归并排序
  2. 【AI视野·今日Robot 机器人论文速览 第九期】Thu, 17 Jun 2021
  3. Git—基础知识及常用命令(系列一)
  4. linux 命令行使用wget下载百度云资源
  5. 断点调试 debug模式 1006
  6. Slog59_项目上线之域名备案时两家或多家运营商之间的业务交叉经历
  7. Selenium代码示例
  8. 《游戏设计师修炼之道:数据驱动的游戏设计》一2.3 创建漏洞:一个例子
  9. 面对微信小程序的威胁,支付宝可以考虑安心做B2C的社交了
  10. aix Mysql-Rpm puppet puppetAgent