好难的数组题目

时间:2008-05-10 09:56:59   来源:论坛整理  作者:  编辑:chinaitzhe
有2个数组,一个里面按次序放着0-99 另一个放着0-100 写一段代码 查找出 第二个数组中重复的那个数,要求代码写出?

网友回复:? 好难的线程题 [J2EE / EJB / JMS] 40 lc2tp
04-13 22:28 0
治理

好难哦 不会
网友回复:
引用 1 楼 classnameextendsjava 的回复:
? 好难的线程题 [J2EE / EJB / JMS] 40 lc2tp
04-13 22:28 0
治理

好难哦 不会

真的很难
网友回复:题目是什么意思啊,是不是说一个数组1 中存放 {1,2,3,4}
数组2中存放 {1,2,2,3,4}, 就是要找出那一个重复的数阿?

假如是这样似乎和数组1,数组2没有关系啊,你的意思是100个格子里放99个数,肯定有一个数重复就是要找出这个数?

假如是这个意思,那很简单阿,我说的这个意思是不是啊,假如是的那我再写代码了。
网友回复:按照楼上的理解,利用计数排序,借助第一个数组存放第二个数组中各个元素的数目,最后遍历数组一,输出计数为2的数组下标。
时间复杂度为o(n)。
网友回复:是的阿,要害不知道是不是这个意思,否则怎么叫“好难的”阿。。。。
网友回复:给你两种思路:

1、后面的加起来减去前面的,就是重复的数字
2、或者是将第二个数组排序,然后两两比较,a[i]和a[i 1]比较,就知道那个重复了
网友回复:上楼的想法很好
网友回复:List list = new ArrayList(Arrays.asList(Arr1)); //Arr1 第一个数组
list.retainAll(Arrays.asList(Arr2)); //Arr2 第二个数组, list中的就是两数组相同的元素了.
网友回复:另外,你还可以使用Comparable 和 Comparator。

网友回复:
引用楼主 lc2tp 的帖子:
有2个数组,一个里面按次序放着0-99 另一个放着0-100 写一段代码 查找出 第二个数组中重复的那个数,要求代码写出?

真的很难吗?
做一个数组不能存储重复的元素,将你所谓的数组的元素取出放到不能重复的数组里面去,当放不进去的时候记下他不就可以了吗?

以下是我上次自己写的一个非凡的数组,,他里面不能存储重复的元素,还可以自动排序,删除指定位置的元素等

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class MyQueue {
private String[] myque;

public MyQueue() {
//这里你可以设置你要这个数组的大小
this.myque = new String[100];

}

public void putString(String item) {
String element = item;
boolean flag = false;
for (int i = 0; i < myque.length; i ) {
String se=myque[i];

if (se!= null) {
if (se.equals(element)) {
flag = false;
//这里就可以做文章了,,
//可以把这个元素打印,也可以另行处理对吧
break;
}

} else {
flag = true;
}
}
if (flag) {
int i;
for (i = 0; i < myque.length; i ) {
if (myque[i]==null) {
myque[i] = item;
break;
}

}
}
}

public void sort() {
String charge;
int len=0;
for(int k=0;k <myque.length;k ){
if(myque[k]==null){
len=k;
break;
}
}
System.out.println(len);
for (int i = 0; i <len; i ) {
for (int j =0; j <len-i; j ) {

if(myque[j]!=null&&myque[j 1]!=null)
{
String element1=myque[j 1].trim();
int flag = myque[j].compareTo(element1);
if (flag >0) {
charge = myque[j];
myque[j] = myque[j 1];
myque[j 1] = charge;

}
}

}
}
}

public int length() {
int len=0;
for(int k=0;k <myque.length;k ){
if(myque[k]==null){
len=k;
break;
}
}
return len;
}

public String getElement(int index) {
String element = "";
element = myque[index];
return element;
}

public void delete(int index) {
int len=0;
int i = 0;
for(int k=0;k <myque.length;k ){
if(myque[k]==null){
len=k;
break;
}
}
if(index <len){
for (i = index; i <= len - 1; i ) {
myque[i] = myque[i 1];
}

}
}
public String getNextElement(String str){
String element="";
int len=0;
for(int k=0;k <myque.length;k ){
if(myque[k]==null){
len=k;
break;
}
}
for(int i=0;i <len;i ){
if(myque[i].equals(str.trim())){
element=myque[i 1];
break;
}
}
return element;
}

}

网友回复:晕 楼主什么意思 按照楼主意思 不应该是线程的问题吧 直接求和相减就OK了啊
网友回复:后面的减去前面的就OK了吧
网友回复:后加-前加
网友回复:你可以把数组转为set在处理。这种方法要比sky_ccy的简单.他在代码太多。我没有看
public class Lei
{
public static void main(String[] args) {
// TODO 自动生成方法存根
Set set1 = new HashSet();
Set set2 = new HashSet();
set1.add(new Integer(2));
set2.add(new Integer(1));
set2.add(new Integer(2));
List list = new ArrayList();
for(Iterator iter = set2.iterator();iter.hasNext();){
Integer a = (Integer)iter.next();
if(set1.contains(a)){
list.add(a);
}
}
for(int i=0;i <list.size();i ){
System.out.println(list.get(i));
}
}

}
关键字:数组,题目,

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面