zoukankan      html  css  js  c++  java
  • 一组数中是否存在若干数之和等于已知数

    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

  • 相关阅读:
    java 异常练习题1
    java 异常练习题
    java 抽象类
    java 接口练习题6
    java 接口练习题5
    java 接口练习题4
    java 接口练习题3
    java接口练习题2
    java 接口练习题1
    java 泛型
  • 原文地址:https://www.cnblogs.com/xiaoxian1369/p/2275690.html
Copyright © 2011-2022 走看看