A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黎健东 中级黑马   /  2013-3-8 13:27  /  5687 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

数组a:aa,bb,cc,dd,ee
数组b:aa,ff,gg,cc

用最小次数查询出两个数组相同的元素。


如果换成list,又是怎么样的
list a:aa,bb,cc,dd,ee
list b:aa,ff,gg,cc

评分

参与人数 1技术分 +1 收起 理由
李培根 + 1 赞一个!

查看全部评分

6 个回复

正序浏览
我提供一种ACM程序设计竞赛中常用的方案:
1、先把两个数组/集合排序,可使用快速排序,时间复杂度为 nLog(n)
2、拿数组1中的元素使用二分查找在数组2中查找,时间复杂度为 log(n)

ps:数据量较大的时候使用,数据量小就没必要这样折腾了
回复 使用道具 举报
黎健东 发表于 2013-3-8 14:34
哈哈,还不错哈,谢谢
对了,再请教一下
4/9;

import java.text.DecimalFormat;
/**
*  【获取小数点后两位数】
* @author Administrator
*
*/
public class Test {
        public static void main(String[] args) {
                DecimalFormat digits = new DecimalFormat("0.00");
                System.out.println(digits.format((double)4/9));
        }
}
回复 使用道具 举报
两个数组问题,我的代码用到了HashSet集合;关于List类型的也可以,看完这个,List类型的你也能写出来了
  1. public class Contain {
  2.    static String  a [] = {"aa","bb","cc","dd","ee"};
  3.    static String  b [] = {"aa","ff","gg","cc"};
  4.    static void Contain ()
  5.    {
  6.    HashSet<String> aa = new HashSet<String>();
  7.        for(int i=0;i<a.length;i++){
  8.          aa.add(a[i]);  
  9.          }
  10.        for(int i=0;i<b.length;i++){
  11.         if(aa.contains(b[i])){
  12.             System.out.println(b[i]);  
  13.             }
  14.         }
  15.    }
  16. public static void main(String[] args) {
  17.         Contain();
  18. }
  19. }
复制代码
回复 使用道具 举报
黎健东 发表于 2013-3-8 14:34
哈哈,还不错哈,谢谢
对了,再请教一下
4/9;

public static double method_8(double d1,int n)
        {
                double d2=d1-(int)d1;//取d1的小数位
                int num=1;
                for(int i=0;i<n;i++)
                        num*=10;
                d2=(int)(d2*num);//保留num位数
                d1=(int)d1;//将d1取整
                d1=d1+d2/num;//加上d1的小数位
                return d1;
        }
这是以前写的保留浮点型数据的任意位数的方法.你参考下.
回复 使用道具 举报
陈圳 发表于 2013-3-8 13:49
这算么?

哈哈,还不错哈,谢谢
对了,再请教一下
4/9;
我想得到一个精确2位小数,该怎么写,好久没写忘了

点评

import java.text.DecimalFormat; /** * 【获取小数点后两位数】 * @author Administrator * */ public class Test { public static void main(String[] args) { DecimalFormat digits = new ...   发表于 2013-3-8 15:33
回复 使用道具 举报
  1. class Test3
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String[] a1={"aa","bb","cc","dd","ee"};
  6.                 String[] a2={"aa","ff","gg","cc"};
  7.                 System.out.println(getStr(a1,a2));//输出aa,cc
  8.         }
  9.         public static String getBuf(ArrayList<String> a1,ArrayList<String> a2)//都是一个想法,就是先把其中一个转换成一个字符串,
  10.         //如果用方法查找,实现最小比较次数得到相同元素
  11.         {
  12.                 String s="";
  13.                 String str="";
  14.                 for(Iterator<String> in=a1.iterator();in.hasNext();)
  15.                         s+=in.next();
  16.                 for(String s1:a2)
  17.                 {
  18.                         if(s.contains(s1))
  19.                                 str+=s1+" ";
  20.                 }
  21.                 return str;
  22.         }
  23.         public static String getStr(String[] a1,String[] a2)//字符串
  24.         {
  25.                 String s=Arrays.toString(a1);
  26.                 String s2="";
  27.                 for(String s1:a2)
  28.                 {
  29.                         if(s.contains(s1))//这个只需要判断字符数组的长度,就可以得到结果
  30.                         s2+=s1+" ";
  31.                 }
  32.                 return s2;
  33.         }
  34. }
复制代码
这算么?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马