
看看大家的解题思路,除了循环遍历添加次数统计以外,都有什么办法,解出正确答案!
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class findSameNum {
public static int [] findSameNum1(int [] arr) {
//https://blog.csdn.net/weixin_34927903/article/details/114033321
Arrays.sort(arr);
ArrayList same = new ArrayList();
ArrayList result = new ArrayList();
int pre=-1;
for(int i=0;i<arr.length-1;i++) {
if(arr[i]==arr[i+1]) {
result.add(arr[i]);
}else if(arr[i]!=arr[i+1]&&arr[i]==pre){
result.add(arr[i]);
}
pre=arr[i];
}
System.out.println(result);
int [] rarr = new int[result.size()];
for(int i=0;i<result.size();i++) {
rarr[i] = (Integer)result.get(i);
}
return rarr;
}
public static int [] findSameNum2(int [] arr) {
ArrayList notSame = new ArrayList();
for(int i=0;i<arr.length;i++) {
int find=0;
for(int j=0;j<arr.length;j++) {
if(arr[i]==arr[j]&&i!=j) {
find=1;
break;
}
}
if(find==0) {
notSame.add(arr[i]);
}
}
//System.out.println("notSame="+notSame);
ArrayList same = new ArrayList();
for(int i=0;i<arr.length;i++) {
//https://www.runoob.com/java/java-arraylist-contains.html
if(notSame.contains(arr[i])==false) {
same.add(arr[i]);
}
}
System.out.println(same);
int [] rarr = new int[arr.length-notSame.size()];
for(int i=0;i<same.size();i++) {
rarr[i] = (Integer)same.get(i);
}
return rarr;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] arr = {1,1,2,3,1,4,8,2,7,5,4,10,6,5,9};
findSameNum1(arr);
findSameNum2(arr);
}
}