| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1493 人关注过本帖
标题:假设有一个乱序的长度至少大于2的整数数组A,请你找出两数之和等于T的所有配 ...
取消只看楼主 加入收藏
JavaJack
Rank: 2
来 自:YunNan
等 级:论坛游民
帖 子:24
专家分:26
注 册:2016-11-16
结帖率:0
收藏
 问题点数:0 回复次数:1 
假设有一个乱序的长度至少大于2的整数数组A,请你找出两数之和等于T的所有配对,并返回配对的数目。
要求你认为算法复杂度最低的方法!!!

求大神指导!!!分享各自认为最好的方法
import java.util.*;
class Pairs
{
    int i=0,j=0;
    public int findPairs(int[] a,int sum,int T){
        Arrays.sort(a);                    //为数组排序
        while (i<a.length-1-j)
        {
            int x=a.length-1-j;                //数组自右逐一向前指定数组元素的标识
            int s=a[i]+a[x];            //排序后数组由前向指定数组元素与后向指定元素之和
            if (s>T)                    //若和大于指定元素,修改数组后向元素标识
            {
                j++;
            }else if(s<T){                //若和小于指定元素,修改数组前向元素标识
                i++;
            }else{                        //若s=T,则输出此数对,以及统计个数
                sum++;
                System.out.print("[" + a[i] + "," + a[x] + "]" + "   ");
                i++;
                j++;
            }
        }
        return sum;
    }
}
public class FindPairsDemo
{
    public static void main(String args[])
    {
        Pairs p=new Pairs();
        int arr[]={49,51,23,77,90,10,18,82};
        int num=0;
        int T=10;
        System.out.println("\n符合条件的数据有" + p.findPairs(arr,num,T) + "对!");
    }
}
搜索更多相关主题的帖子: public import 元素 最好 
2016-11-18 01:03
JavaJack
Rank: 2
来 自:YunNan
等 级:论坛游民
帖 子:24
专家分:26
注 册:2016-11-16
收藏
得分:0 
回复 2楼 learnJava
非常感谢你的指教!
题目里的确说明了数组里没有重复的元素!在写程序的时候我也没有想过如果没有这个条件应该怎么做,完全没意识到这个问题,不得不说你想的很周到!
在此基础上折中的办法我也想过,只是最后程序没成功写出来,欢迎挑战一下
我也是个新手,大家互相学习,共同进步
2016-11-18 17:34
快速回复:假设有一个乱序的长度至少大于2的整数数组A,请你找出两数之和等于T的 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032443 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved