leetcode LCR 179. 查找总价格为目标值的两个商品(优质解法)

leetcode LCR 179. 查找总价格为目标值的两个商品(优质解法)_第1张图片

代码:

class Solution {
    public int[] twoSum(int[] price, int target) {
        int length=price.length;
        int left=0;
        int right=length-1;
        while (lefttarget){
                right--;
            }else if(price[left]+price[right]

题解:

        题目中给出了很关键的信息就是,购物车内的商品价格按照升序记录于数组 price

        我们可以利用有序数组的单调性和双指针来解决该问题,通过示例2 给出的数据 8, 21, 27, 34, 52, 66 进行讲解

        首先让 L 指针指向下标为 0 的数,这是数组中最小的数,让 R 指针指向下标为 price.length - 1 的数,这是数组中最大的数,计算 8+66 =74 > 61,此时 L 指针指向的已经是最小的数了,所以要让 R- - ,淘汰 66

8        21         27         34         52         66        target=61

L                                                             R

        R- - 以后指向 52,此时 8+52 = 60 < 61 ,此时 R 指针指向的已经是最大的数了,所以要让 L+ +,淘汰 8

8        21         27         34         52         66        target=61

L                                                 R            

        一直循环上述的操作,直到 price[ L ] + price[ R ] = target 为止

8        21         27         34         52         66        target=61

                        L            R

你可能感兴趣的:(leetcode,leetcode,算法,职场和发展)