實作方式
package cn.cnsy123.test;
import java.util.Arrays;
/**
* @author yangpengfei
* <p>email:[email protected]</p>
* @version 1.0
* @date 2018-03-12 17:40:00
* @description 請實作一個算法,傳回一個數組,該數組是移除了原數組中的重複元素,并保持元素的順序。例如:輸入:[2,1,2,3],輸出:[2,1,3]。
*/
public class ArrayDemo {
/**
* 我認為重點在于數組的擴容思想
*/
public static int [] convertDistinctArr(int [] sourceArr) {
int resultArrSize = 0;
int [] result = new int [resultArrSize];
for(int i = 0; i< sourceArr.length; i++) {
//如果資料不存在
if(!checkDataIsExist(result, sourceArr[i])) {
++resultArrSize;
result = Arrays.copyOf(result, resultArrSize);
result[resultArrSize-1] = sourceArr[i];
}
}
return result;
}
/**
* 檢查結果目标數組中是否有該元素
*/
private static boolean checkDataIsExist(int [] target,int source) {
//如果目标數組剛初始化,直接放回不存在
if(target.length < 1) {
return false;
}
boolean flag = false;
for(int i = 0; i< target.length; i++) {
if(target[i] == source) {
flag = true;
break;
}
}
return flag;
}
}