日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

一组数中是否存在若干数之和等于已知数

發布時間:2023/12/13 综合教程 43 生活家
生活随笔 收集整理的這篇文章主要介紹了 一组数中是否存在若干数之和等于已知数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.是否存在兩個數的和與已知數(key)相等。

A:窮舉:在數組中任選兩個數,判斷是否等于已知數,復雜度O(N^2).

B:二分:先排序(若是有序,則不需要),然后二分查找M-array[i]是否存在于這個數組,復雜度O(N*log(N)).

C:先排序(若是有序,則不需要),然后用兩個指針(頭指針head與尾指針tail),當*head+*tail>key,則tail--,若是小于,則是head++,若是相等,則是存在。

對于C:

int getResult(int *num, int n_len, int key, int &num_1, int &num_2) {
	int *i, *j;
	int temp;
	i = num, j = num + n_len - 1;
	while (i < j) {
		temp = *i + *j;
		if (temp > key) {
			j--;
		} else if (temp < key) {
			i++;
		} else {
			num_1 = *i;
			num_2 = *j;
			return true;
		}
	}
	return false;
}

public static void getResult(int[] num_Array, int len, int key) {
		int i, j, temp;
		i = 0;
		j = len - 1;
		while (i < j) {
			temp = num_Array[i] + num_Array[j];
			if (temp > key) {
				j--;
			} else if (temp < key) {
				i++;
			} else {
				System.out.println(num_Array[i] + " " + num_Array[j]);
				return;
			}
		}
	}

練習:SOJ SUM http://cs.scu.edu.cn/soj/problem.action?id=1627

總結

以上是生活随笔為你收集整理的一组数中是否存在若干数之和等于已知数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。