找出数组中相加等于某数的两个数

本文介绍了一种算法,用于在一个整数数组中查找所有和为给定值的元素对。通过先排序数组,然后使用双指针技术,可以有效地找到满足条件的元素对,且不使用额外的数据结构。
	public static void main(String[] args) throws IOException {
	    int[] a={4,5,3,2,7,9,1};
	    findSumNum(a,10);
	    //1,9
	    //3,7
	    //5,5
}
	//给定一个数字,一个数组,找出数组中相加等于这两个数的和,不能用数据结构 
	public static void findSumNum(int[] a,int sum){
		Arrays.sort(a);
		int i=0,j=a.length-1;

		while(i<=j){
			if(a[i]+a[j]<sum) i++;
			else if(a[i]+a[j]>sum) j--;
			else {
				System.out.println(a[i]+","+a[j]);
				i++;
			}
		}		
	}
### 找出数组中和为9的个数字 可以通过双重循环或哈希表的方式找出数组中和为9的个数字。具体实现如下: - 使用双重循环的方法,依次遍历数组中的每个元素,并与其他元素进行配对,判断其和是否等于9。例如,对于数组`[1, 3, 5, 7, 9, 10]`,可以通过以下代码实现: ```go a := [...]int{1, 3, 5, 7, 9, 10} for i := 0; i < len(a); i++ { for j := i + 1; j < len(a); j++ { if a[i] + a[j] == 9 { fmt.Println(i, j) } } } ``` - 另一种更高效的方法是使用哈希表。通过遍历数组,将每个元素与目标值之间的差值存储在哈希表中,如果当前元素存在于哈希表中,则说明找到了和为9的个数字。例如,对于数组`[2,7,11,15]`,可以通过以下代码实现: ```python def two_sum(nums, target): hash_map = {} for i, num in enumerate(nums): complement = target - num if complement in hash_map: return [hash_map[complement], i] hash_map[num] = i return [] ``` - 如果数组是有序的,可以使用双指针方法。初始时,左指针指向数组的起始位置,右指针指向数组的末尾位置。通过调整指针的位置,找到和为9的个数字。例如,对于有序数组,可以通过以下代码实现: ```java public class Solution { public ArrayList<Integer> FindNumbersWithSum(int [] array, int sum) { ArrayList<Integer> list = new ArrayList<>(); if(array == null || array.length == 0){ return list; } 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]); break; } else if(array[left] + array[right] < sum) { left++; } else { right--; } } return list; } } ``` 以上方法均可用于找出数组中和为9的个数字,具体选择哪种方法取决于数组的特性和应用场景[^1]。 --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值