Java教程

算法珠玑——双指针(2)

本文主要是介绍算法珠玑——双指针(2),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

算法珠玑——双指针(2)

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

完全随便测的一次。用例太少。

class Solution {
public:
    vector<int> twoSum(vector<int>& numbers, int target) {
        
        /*
            基本情况:  left(1) = 0
                      right(1) = numbers.size()-1
            终止情况:  只有一个,left 不小于 right
        */
        for (int left = 0, right = numbers.size()-1; left < right;)
        {
            /*
                归纳步骤: left 和 right 目标值与 target 做对比。
            */
            if ((numbers[left] + numbers[right]) < target)
                left++;
            else if ((numbers[right] + numbers[left]) > target)
                right--;
            else
                return {left+1, right+1};
        }


        return {};
    }
};

本代码包裹在了for循环中,为了提高性能减少全局变量的使用。
此代码仍没有极致优化。

这篇关于算法珠玑——双指针(2)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!