zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【算法题】输入一维数组array和n,找出和值为n的任意两个元素

算法输入数组 元素 两个 Array 任意 找出
2023-09-14 09:07:23 时间

题目描述

输入一维数组array和n,找出和值为n的任意两个元素。例如:
array = [2, 3, 1, 10, 4, 30]
n = 31
则结果应该输出1, 30 顺序不重要。如果有多个满足条件的,返回任意一对即可。

源代码

双指针法。

package com.light.sword;

/**
 * @author: Jack
 * 2021/4/21 下午7:51
 * <p>
 * 输入一维数组array和n,找出和值为n的任意两个元素。例如:
 * array = [2, 3, 1, 10, 4, 30]
 * n = 31
 * 则结果应该输出1, 30 顺序不重要
 * 如果有多个满足条件的,返回任意一对即可
 */

public class ArraySumN {
    public static void main(String[] args) {
        int[] array = new int[]{2, 3, 1, 10, 4, 30};
        int[] ans = find(array, 31);
        System.out.println(ans[0]);
        System.out.println(ans[1]);
    }

    public static int[] find(int[] array, int n) {
        int[] ans = new int[2];
        // 排序
        sort(array);

        int i = 0, j = array.length - 1;
        while (i < j) {
            if