这道题实际上跟本专栏上一题属于同一类型,是上一题的简单版,可以点击跳跃。
有效三角形的个数【双指针】
法一:暴力求解
class Solution
{
public:vector<int> twoSum(vector<int> &nums, int target){int n = nums.size();for (int i = 0; i < n; i++){// 第⼀层循环从前往后列举第⼀个数for (int j = i + 1; j < n; j++){ // 第⼆层循环从 i 位置之后列举第⼆个数if (nums[i] + nums[j] == target) // 两个数的和等于目标值 已经找到结果return {nums[i], nums[j]};}}return {-1, -1};}
};
对撞指针:思路和上篇一致
class Solution
{
public:vector<int> twoSum(vector<int> &nums, int target){int left = 0, right = nums.size() - 1;while (left < right){int sum = nums[left] + nums[right];if (sum > target)right--;else if (sum < target)left++;elsereturn {nums[left], nums[right]};}return {-1, -1};}
};