本文主要是介绍查找总价格为目标值的两个商品 ---- 双指针,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接
题目:
分析:
- 解法一: 暴力解法, 将每两个的和都算出来, 判断是否为目标值
- 解法二:
- 数组中的数是按升序排序的, 我们可以定义左右指针
- 如果和小于目标值, 则应该让和变大, 所以左指针右移
- 如果和大于目标值, 则应该让和变小, 所以右指针左移
思路:
- 定义left = 0, right = price.length-1
- 循环计算price[left] + price[right], 直到left和right相遇
- 如果>目标值, 则right--
- 如果<目标值, 则left++
- 如果== 目标值, 则返回
代码:
class Solution {public int[] twoSum(int[] price, int target) {int left = 0;int right = price.length-1;while(left<right){if(price[left] + price[right] > target) right--;else if(price[left] + price[right] < target) left++;else return new int[]{price[left],price[right]};}return null;}
}
这篇关于查找总价格为目标值的两个商品 ---- 双指针的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!