zoukankan      html  css  js  c++  java
  • Java算法题删除有序数组中的重复元素

    题目:编写一个方法,删除有序数组中的重复元素。例如:数组:1,2,2,4,5,5,5,8,9,9,10。删除重复元素后:1,2,4,5,8,9,10。

    RemoveRepeatItem.java

     1 public class RemoveRepeatItem {
     2     /**
     3      * 单元测试
     4      */
     5     public static void main(String[] args){
     6         int[] sortArr = { 1,3,3,4,5,5,5,7,8,9,9,9 };
     7         int[] arr = removeRepeat(sortArr);
     8         for(int item : arr){
     9             System.out.print(item + " ");
    10         }
    11     }
    12     
    13     /**
    14      * 删除有序数组中重复元素
    15      */
    16     public static int[] removeRepeat(int[] a){
    17         int N = a.length;
    18         int[] arr = new int[N];
    19         for(int i = 0;i < N; i++){
    20             arr[i] = a[i]; //保护性复制
    21         }
    22         int len = N;
    23         for(int i = 0; i < len; i++){
    24             //记录重复元素个数
    25             int repeatCnt = 0;
    26             for(int j = i + 1;j < len;j++){
    27                 if(arr[j] == arr[i]){
    28                     //如果重复,repeatCnt加1
    29                     repeatCnt++;
    30                 } else if(arr[j] > arr[i]){
    31                     //及时跳出循环
    32                     break;
    33                 }
    34             }
    35             //如果重复,开始移动元素
    36             if(repeatCnt > 0){
    37                 for(int k = i + repeatCnt + 1; k < len;k++){
    38                     arr[k - repeatCnt] = arr[k];
    39                 }
    40                 //数组长度减小
    41                 len = len - repeatCnt;
    42             } 
    43         }
    44         
    45         //结果数组
    46         int[] result = new int[len];
    47         for(int i = 0;i < len; i++){
    48             result[i] = arr[i];
    49         }
    50         
    51         return result;
    52     }
    53 }
  • 相关阅读:
    高精度类模板
    NOIP2012 疫情控制
    NOIP2012 借教室
    Uva 长城守卫——1335
    Uva 网络(Network,Seoul 2007,LA 3902)
    oracle 中decode函数用法
    oracle数据库查询出多条数据,合并,之后列转行
    mysql中插入序列表
    mysql中创建event定时任务
    mysql 取得各种时间
  • 原文地址:https://www.cnblogs.com/dongliyang/p/2994583.html
Copyright © 2011-2022 走看看