亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java如何實現刪除排序數組中重復元素的方法

發布時間:2021-04-15 11:42:17 來源:億速云 閱讀:201 作者:小新 欄目:編程語言

這篇文章主要介紹Java如何實現刪除排序數組中重復元素的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

具體如下:

題目描述:

給定一個排序數組,在原數組中刪除重復出現的數字,使得每個元素只出現一次,并且返回新的數組的長度。

不要使用額外的數組空間,必須在原地沒有額外空間的條件下完成。

一:通過ArrayList解決

時間復雜度和空間復雜度都為O(n)

ArrayList<Integer> list = new ArrayList<Integer>();
// 去掉數組中重復的元素
public int removeTheagain01(int[] array) {
    if (array == null || array.length == 0) {
      return 0;
    } else if (array.length == 1) {
      return 1;
    } else {
      int i = 0;
      int n = array.length - 1;
      while (i <= n) {
        if (i == n) {
          list.add(array[i]);
          i++;
        } else {
          int j = i + 1;
          if (array[i] == array[j]) {
            while (j <= n && array[i] == array[j]) {
              j++;
            }
          }
          list.add(array[i]);
          i = j;
        }
      }
      for (int k = 0; k < list.size(); k++) {
        array[k] = list.get(k);
      }
      return list.size();
    }
}

二:利用System.arraycopy()函數來復制數組

時間復雜度為O(n^2),空間復雜度為O(n)

public int removeTheagain02(int[] array) {
    if (array == null || array.length == 0) {
      return 0;
    } else if (array.length == 1) {
      return 1;
    } else {
      int end = array.length - 1;
      for (int i = 0; i <= end; i++) {
        if (i < end) {
          int j = i + 1;
          if (array[i] == array[j]) {
            while (j <= end && array[i] == array[j]) {
              j++;
            }
          }
          System.arraycopy(array, j, array, i + 1, end - j + 1);
          end -= j - i - 1;
        }
      }
      return end + 1;
    }
}

三:借助臨時變量解決問題

時間復雜度O(N),空間復雜度O(1)

public int removeTheagain03(int[] array) {
    if (array == null || array.length == 0) {
      return 0;
    } else if (array.length == 1) {
      return 1;
    } else {
      int temp = array[0];
      int len = 1;
      for (int i = 1; i < array.length; i++) {
        if (temp == array[i]) {
          continue;
        } else {
          temp = array[i];
          array[len] = array[i];
          len++;
        }
      }
      return len;
    }
}

以上是“Java如何實現刪除排序數組中重復元素的方法”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

芮城县| 越西县| 横山县| 长春市| 通化县| 白水县| 冕宁县| 东乌珠穆沁旗| 宜川县| 台江县| 长寿区| 拜泉县| 任丘市| 清流县| 道孚县| 抚顺县| 江都市| 武隆县| 米泉市| 怀远县| 错那县| 互助| 新兴县| 宁远县| 河源市| 华容县| 星子县| 汶上县| 合肥市| 静安区| 高淳县| 大关县| 十堰市| 温宿县| 凭祥市| 万全县| 什邡市| 沁阳市| 瓮安县| 太仓市| 阳新县|