【算法题】输入一维数组array和n,找出和值为n的任意两个元素
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