找出整数数组中两两相加等于key的整数对

本文介绍了两种不同的算法来解决数组中寻找特定整数对的问题。第一种算法使用双指针技术,通过一次遍历找到所有和等于指定值的整数对;第二种算法采用双重循环的方式,同样可以找出所有符合条件的整数对。两种方法各有优劣,第一种算法的时间复杂度为O(n),而第二种算法的时间复杂度为O(n^2)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前天在某个公司的现场笔试中遇到一道编程题,很简单,然后当时直接写了个双重循环:

public static ArrayList<String> findNumCouple1(int[] array, int key) {
ArrayList<String> strArray = new ArrayList<String>();
Arrays.sort(array);
int left = 0;
int right = array.length - 1;
while (left < array.length && left < right) {
if(array[left] + array[right] < key){
left++;
}
else if (array[left] + array[right] > key) {
right--;
}
else {
String couple = "(" + array[left] + "," + array[right] + ")";
strArray.add(couple);
left++;
right--;
}
}
return strArray;
}

今天在做练习的时候,遇到一道类似的题,求数组中整数对与key的最小差值,然后想到了另外一种方法:

public static ArrayList<String> findNumCouple2(int[] array, int key) {
ArrayList<String> strArray = new ArrayList<String>();
Arrays.sort(array);
for (int i = 0; i < array.length; i++) {
for (int j = i; j < array.length; j++) {
if(array[i] + array[j] == key){
String couple = "(" + array[i] + "," + array[j] + ")";
strArray.add(couple);
}
}
}
return strArray;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值