首页 > 其他 > 详细

力扣 双指针专题

时间:2021-02-17 15:34:38      阅读:34      评论:0      收藏:0      [点我收藏+]

167. 两数之和 II

https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted/

 vector<int> twoSum(vector<int>& numbers, int target) {
        for(int i=0,j=numbers.size()-1;i<j;i++){
            while(i<j && numbers[i]+numbers[j]>target) j--;
            if(i<j && numbers[i]+numbers[j]==target) return {i+1,j+1};
        }
        return {};
    }

思路:定义双指针,i在数组的开头,j在数组的末尾。
如果两个指针指向元素的和 sum == target,那么得到要求的结果;
如果 sum > target,移动较大的元素,使 sum 变小一些;
如果 sum < target,移动较小的元素,使 sum 变大一些。
数组中的元素最多遍历一次,时间复杂度为 O(N)。只使用了两个额外变量,空间复杂度为 O(1)。

力扣 双指针专题

原文:https://www.cnblogs.com/OfflineBoy/p/14408881.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!