算法每日一题 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};
    }
}

五、总结

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

相关推荐
ZhengEnCi4 小时前
Agent 架构怎么选:从单 Agent 到多 Agent 编排的选型决策指南
算法·架构
秋天的怀念_David4 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Pniubi5 小时前
力扣283移动零(双指针法)
算法·leetcode·职场和发展
hhb_6185 小时前
大模型落地三重优化实战
人工智能·算法·机器学习
云和数据.ChenGuang5 小时前
光哥说Python RAG 系统需要哪些评估指标:从检索到生成的全链路评测指南
网络·人工智能·python·算法·langchain
2601_970703837 小时前
工业除湿机租赁:把一份租金合同拆开看
大数据·数据结构·算法·数据库架构·推荐算法
心中有你02147 小时前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)
java·数据库·算法
ZhengEnCi8 小时前
同样的模型,为什么本地和云 API 差别那么大:量化精度、聊天模板与采样参数的三大元凶
人工智能·算法·llm
Flynn Liang8 小时前
RAG 答非所问/幻觉怎么破?Spring AI QuestionAnswerAdvisor 召回优化实战(TopK/重排/混合检索)
人工智能·算法·spring·rag·幻觉·springai
liminla!8 小时前
SQL 从入门到进阶:语法速查与实战练习(完整优化版)
数据库·sql·算法