面试题:请实现一个算法,返回一个数组,该数组是移除了原数组中的重复元素,并保持元素的顺序。例如:输入:[2,1,2,3],输出:[2,1,3]。

实现方式

package cn.cnsy123.test;

import java.util.Arrays;

/**
 * @author yangpengfei
 * 

email:[email protected]

* @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; } }

 

你可能感兴趣的:(java问题,java,数据结构与算法)