当前位置: 首页 > news >正文

leetcode: Two Sum II - Input Array is Sorted

leetcode: Two Sum II - Input Array is Sorted

  • 1. 题目
  • 2. 解答
  • 3. 总结

1. 题目

Given a 1-indexed array of integers numbers that is already sorted in 
non-decreasing order, find two numbers such that they add up to a specific target 
number. Let these two numbers be numbers[index1] and numbers[index2] where 1 <=
index1 < index2 <= numbers.length.
Return the indices of the two numbers, index1 and index2, added by one as an 
integer array [index1, index2] of length 2.
The tests are generated such that there is exactly one solution. You may not use 
the same element twice.
Your solution must use only constant extra space.

Example 1:

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. We return [1, 2].

Example 2:

Input: numbers = [2,3,4], target = 6
Output: [1,3]
Explanation: The sum of 2 and 4 is 6. Therefore index1 = 1, index2 = 3. We return [1, 3].

Example 3:

Input: numbers = [-1,0], target = -1
Output: [1,2]
Explanation: The sum of -1 and 0 is -1. Therefore index1 = 1, index2 = 2. We return [1, 2].

Constraints:

  • 2 <= numbers.length <= 3 * 104
  • -1000 <= numbers[i] <= 1000
  • numbers is sorted in non-decreasing order.
  • -1000 <= target <= 1000
  • The tests are generated such that there is exactly one solution.

2. 解答

class Solution {
public:vector<int> twoSum(vector<int>& numbers, int target) {int left = 0, right = numbers.size() - 1;while(left < right){if(numbers[left] + numbers[right] == target)return {left + 1, right + 1};else if(numbers[left] + numbers[right] > target)--right;else++left;}return {-1, -1};}
};

   双指针解法,可以理解为一个“元解法"。它基于排序的数组进行。利用大、小关系做一些确定性结论,从而缩小范围。
  注意“Given a 1-indexed array”,因此返回结果要在0-indexed的基础上+1。

3. 总结

  部分解法或思想需要以常识或者直觉的方式记忆在脑中,我这边称之为"元解法"。就好比数学中的乘法口诀表的存在。
  对应题干上异常的说明,要划出来。在方案写完之后,对应要点,是否都已在代码的考虑之内。

http://www.lryc.cn/news/2812.html

相关文章:

  • STL——list
  • 实战打靶集锦-004-My-Cmsms
  • c++代码实现我的世界(14)
  • RMQ--区间最值问题(在更)
  • 一篇文章搞懂Cookie
  • 深入解读.NET MAUI音乐播放器项目(二):播放内核
  • 4.SpringWeb
  • C++中的枚举与位域
  • 第19章 MongoDB Limit与Skip方法教程
  • 进程间通信——消息队列
  • OpenMMLab 实战营打卡 - 第 7 课
  • MAC Boook打印长图
  • web3:区块链共识机制系列-POS(Proof of Stake)股权证明算法
  • Linux fork()系统调用流程解析
  • 自定义软件帮助文档(qt assistant实现)
  • ESP32设备驱动-GPIO外部中断
  • 【安全】nginx反向代理+负载均衡上传webshel
  • 华为OD机试 - 单词接龙(Python)| 真题,思路,知识点
  • [ 系统安全篇 ] window 命令禁用用户及解禁方法
  • Https 协议超强讲解(二)
  • C语言的程序环境和预处理详解
  • 3.JUC【Java面试第三季】
  • Linux防火墙(7)
  • 2.11整理(2)(主要关于teacher forcing)
  • 亿级高并发电商项目-- 实战篇 --万达商城项目 三(通用模块、商品服务模块、后台API模块、IDEA忽略文件显示等开发工作
  • IDEA下java程序的调试(简易实例图示版)
  • 动态规划算法
  • nacos的单机模式和集群模式
  • Spring Boot 整合定时任务完成 从0 到1
  • Dialogue Transformers