码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【力扣】两数之和 II - 输入有序数组


    力扣|两数之和 II - 输入有序数组

    • 【力扣】两数之和 II - 输入有序数组
      • ✌双指针快速入门
      • 💬两数之和 II - 输入有序数组问题
      • 🍵思路分析
      • ✍️ 算法实现

    【力扣】两数之和 II - 输入有序数组

    ✌双指针快速入门

    1. 双指针
    • 从两端向中间迭代数组
    • 具体做法:一个指针从头部开始,而另一个指针从尾部开始,然后进行相反的运动(类似相遇问题)
    • 使用场景 : 经常在排序数组中使用
    1. 快慢指针
    • 两个指针的运动方向是相同的,而非相反(类似追击问题)

    💬两数之和 II - 输入有序数组问题

    给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length 。

    以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。

    你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。

    你所设计的解决方案必须只使用常量级的额外空间

    示例 1:
    输入:numbers = [2,7,11,15], target = 9
    输出:[1,2]
    解释:2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。返回 [1, 2] 。
    
    示例 2:
    输入:numbers = [2,3,4], target = 6
    输出:[1,3]
    解释:2 与 4 之和等于目标数 6 。因此 index1 = 1, index2 = 3 。返回 [1, 3] 。
    
    示例 3:
    输入:numbers = [-1,0], target = -1
    输出:[1,2]
    解释:-1 与 0 之和等于目标数 -1 。因此 index1 = 1, index2 = 2 。返回 [1, 2] 。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    🍵思路分析

    通过问题描述发现,这是一个已经排好序的数组同时也是个查找问题,立马想到折半查找(不懂的可以看我之前的文章)的思想,需要注意的是,这里是返回两个值要加一

    ✍️ 算法实现

    class Solution {
        public static int[] twoSum(int[] numbers, int target) {
            if(numbers.length<2){
                return null;
            }
            int[] result=new int[2];
            int i=0;
            int j=numbers.length-1;
            int temp=0;
            while(i<=j){
                temp=numbers[i]+numbers[j];
                if(temp==target){
                    result[0]=i+1;
                    result[1]=j+1;
                    return result;
                }else if(temp>target){
                    j--;
                }else{
                    i++;
                }
            }
            return result;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    在这里插入图片描述

    如果觉得对你有帮助的话:
    👍 点赞,你的认可是我创作的动力!
    ⭐️ 收藏,你的青睐是我努力的方向!
    👄 评论,你的意见是我进步的财富!

  • 相关阅读:
    【Linux】iptables之防火墙概述及规则匹配+实例(1)
    2022牛客寒假算法基础集训营2
    javascript基础
    Leetcode 290. Word Pattern
    [附源码]SSM计算机毕业设计学生实习管理系统JAVA
    手摸手系列之SpringBoot+Vue整合snakeflow工作流实战
    Windows环境VSCode配置OpenCV-项目配置(二)
    [JavaScript游戏开发] 2D二维地图绘制、人物移动、障碍检测
    什么是畏缩型性格?如何改变畏缩型性格?
    用红黑树封装map和set
  • 原文地址:https://blog.csdn.net/qq_41080854/article/details/126859909
  • 最新文章
  • 【FHE】我们如何实现同态加密推理(八):SiLU 的密文化——两条路径,和一个 8 字节的开关
    SQLcl 中 c/old/new 替换变量为何失效?先定位再替换
    不让模型写作文,直接从它脑子里读答案:Jev 决策在 .NET 的两条路线
    Halo插件:支持GitHub的图床附件策略
    电视投屏界的“一股清流”!SimpleTVCast 6.0.0-beta 抢先体验:无需TV端App,界面大换血!✨
    华三VXLAN集中式网关实战指南:Spine多活网关 + 双活接入(M-LAG)
    软件更好写之后口碑会更重要
    大 O、大 Omega、大 Theta 的区别,O(n) 复杂度是什么意思
    Java标签跳转:一个鲜为人知但却很实用的小技巧
    多智能体系统论文速读
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号