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

五、总结

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

相关推荐
KaMeidebaby4 小时前
卡梅德生物技术快报|PD1 单克隆抗体定制配套 N 糖全谱质控开发
前端·人工智能·算法·数据挖掘·数据分析
8Qi84 小时前
LeetCode 235. 二叉搜索树的最近公共祖先(LCA)
算法·leetcode·二叉树·递归·二叉搜索树·lca·迭代
bIo7lyA8v5 小时前
算法稳定性分析中的随机扰动建模的技术8
算法
科研online5 小时前
基于多源数据和XGBoost-SHAP分析中国大陆绿地碳汇空间变异影响因素的非线性相关性与尺度差异
算法·学习方法
Cthy_hy6 小时前
拓扑排序超详解:原理 + Kahn 贪心算法
python·算法·贪心算法
三品吉他手会点灯6 小时前
C语言学习笔记 - 43.运算符与表达式 - 运算符1 - 运算符的分类和简单介绍
c语言·笔记·学习·算法
VkN2X2X4b6 小时前
算法复杂度的实验验证与误差分析的技术8
算法
其利天下技术6 小时前
风扇灯无刷电机自适应算法实战指南
算法·cocos2d·无刷电机自适应算法·bldc驱动自适应算法·其利无刷电机驱动算法
8Qi86 小时前
LeetCode 494:目标和(Target Sum)—— 题解 ✅
算法·leetcode·职场和发展·动态规划·01背包
hujinyuan201607 小时前
2026年3月 中国电子学会青少年软件编程(Python)三级考试试卷 真题及答案
java·python·算法