【剑指offer】-和为S的两个数-38/67

简介: 【剑指offer】-和为S的两个数-38/67

1. 题目描述

输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。

2. 题目分析

  1. 使用双指针法,分别指向开头和结尾
  2. 如果:if (array[left] + array[right] > sum)right--;
  3. 如果:array[left] + array[right] < sumleft++;

3. 题目代码

public ArrayList<Integer> FindNumbersWithSum(int[] array, int sum) {
    ArrayList<Integer> list = new ArrayList<>();
    int left = 0;
    int right = array.length - 1;
    while (left < right) {
      if (array[left] + array[right] == sum) {
        list.add(array[left]);
        list.add(array[right]);
        return list;
      } else if (array[left] + array[right] > sum) {
        right--;
      } else {
        left++;
      }
    }
    return list;
  }


相关文章
|
20天前
【刷题日志】深度理解除(/)与取模(%)附水仙花数以及变种水仙花数题解
【刷题日志】深度理解除(/)与取模(%)附水仙花数以及变种水仙花数题解
【剑指offer】-把数组排成最小的数-33/67
【剑指offer】-把数组排成最小的数-33/67
|
5月前
剑指Offer LeetCode 面试题40. 最小的k个数
剑指Offer LeetCode 面试题40. 最小的k个数
23 0
|
5月前
|
Java
每日一题《剑指offer》数组篇之把数组排成最小的数
每日一题《剑指offer》数组篇之把数组排成最小的数
27 0
每日一题《剑指offer》数组篇之把数组排成最小的数
|
5月前
|
Java
每日一题《剑指offer》数组篇之旋转数组的最小数字
每日一题《剑指offer》数组篇之旋转数组的最小数字
23 0
每日一题《剑指offer》数组篇之旋转数组的最小数字
|
5月前
剑指Offer LeetCode 面试题11. 旋转数组的最小数字
剑指Offer LeetCode 面试题11. 旋转数组的最小数字
22 0
|
5月前
蓝桥杯 1的个数
蓝桥杯 1的个数
22 0
|
5月前
剑指Offer LeetCode 面试题56 - II. 数组中数字出现的次数 II
剑指Offer LeetCode 面试题56 - II. 数组中数字出现的次数 II
21 0
|
7月前
|
算法
【Leetcode-190.颠倒二进制位 -191.位1的个数 -202.快乐数】
【Leetcode-190.颠倒二进制位 -191.位1的个数 -202.快乐数】
26 0
|
11月前
|
算法 C++ 容器
剑指Offer - 面试题40:最小的k个数
剑指Offer - 面试题40:最小的k个数
34 0