算法每日一题 Day07|双指针求解和为S的两个数

题目链接:https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/description/

文章目录

一、题目描述


二、解题思路

这道题的核心在于:这个数组是从小到大有序的,想到利用单调性和双指针来解题

具体思路如下:

  • 第一步:定义一个left指针指向数组的第一个元素,定义一个right指针指向数组的最后一个元素
  • 第二步:判断left和right指向的元素之和sum与目标值traget的大小;如果sum>target,就说明left右边的所有元素与right指向的元素之和都大于target,所以遇到这种情况可以让right--;如果sum<target,就让left++;如果相等就返回。

三、关键点 / 易错点

  • 容易出错的地方:这题用两个for循环的暴力解法会超时

四、代码实现(Java)

java 复制代码
class Solution {
    public int[] twoSum(int[] price, int target) {
        int n = price.length;
        int left = 0;
        int right = n-1;
        while(left<right){
            int sum = price[left]+price[right];
            if(sum>target) right--;
            else if(sum<target) left++;
            else return new int[]{price[left],price[right]};
        }
        // 为了照顾编译器,这里再给他一个返回值
        return new int[]{0};
    }
}

五、总结

第一次做的时候用了暴力解法发现时间超时,后面经过思考利用双指针解答出了这道题,希望自己能每天检查刷力扣,提升自己的思维逻辑能力。

相关推荐
qeen871 小时前
【算法笔记】双指针及其经典例题解析
c++·笔记·算法·双指针
黎阳之光1 小时前
黎阳之光:以视频孪生+全域感知,助力低空经济破局突围
大数据·人工智能·算法·安全·数字孪生
CM莫问2 小时前
详解机器学习中的马尔可夫链
人工智能·算法·机器学习·概率论·马尔可夫·马尔科夫
南宫萧幕2 小时前
基于 Luenberger 观测器的 PMSM 无速度传感器 id=0 矢量控制系统 Simulink 建模与实现(一)
算法·matlab·汽车·控制
斯维赤2 小时前
每天学习一个小算法:选择排序
java·学习·算法
超级码力6662 小时前
【Latex第三方文档类standalone】standalone类介绍及应用
算法·数学建模·信息可视化
明朝百晓生2 小时前
强化学习 [chapter10] [page3 ]Actor-Critic Methods
算法
peterfei2 小时前
一个 Tauri + Rust AI 编辑器是怎么同时适配 5 家 AI 大厂的?IfAI v0.4.3 架构拆解
人工智能·算法·架构
Via_Neo3 小时前
桶排序算法
算法·排序算法