题目描述:
去除数组中重复的元素 例如 1,2,2,3,3,4,5,6,6->1,4,5
实现思想:
简单来说就是。如果当前元素是第一个元素,只要比较它与后一个元素是否相等,如果不相等,直接添加到新的数组中。
如果当前元素不是第一个元素,就比较它相邻的左右两边的元素是否相等,如果不相等就添加。
详细就是:
先找到一个基准,假如是第一个元素,定义一个游标,指向第二个元素,然后遍历数组,让基准与游标所指向的元素比较,如果相等,则游标移动一位,如果不相等,则修改基准为当前游标的值,然后比较游标的下一位与基准是否相等,如果相等,则继续移动游标,如果不相等,则将基准添加到新的数组中。但是会漏掉一个元素不是重复元素的情况,因此还需特殊对待一个元素。
public class GetOffer3 {
public static void main(String[] args) {
int arr[] = { 1, 2, 2, 3, 3, 4, 5, 6, 6,8,9,10,10 };
List temp = remove(arr);
for (int i = 0; i < temp.size(); i++) {
System.out.print(temp.get(i) + ",");
}
}
private static List remove(int[] arr) {
if (arr.length == 1) {
return Arrays.asList(arr);
}
int tem =arr[0];
int i=1;
List list = new ArrayList();
if(tem!=arr[i]){
list.add(tem);
}
while(i<arr.length){
if(tem==arr[i]){
++i;
}else{
tem=arr[i];
if(tem!=arr[i+1]){
list.add(tem);
}else{
++i;
}
}
}
return list;
}
}