中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

淮南市| 安岳县| 驻马店市| 和田县| 海伦市| 肃宁县| 南涧| 砚山县| 邵阳县| 克拉玛依市| 府谷县| 和平县| 屏东市| 霍邱县| 外汇| 桦甸市| 方城县| 临潭县| 张家港市| 西充县| 萨迦县| 镇康县| 横山县| 威远县| 丰都县| 延津县| 宿迁市| 兴城市| 新乐市| 司法| 民勤县| 绥德县| 翁源县| 盐城市| 克什克腾旗| 广昌县| 靖州| 邓州市| 海原县| 横峰县| 冕宁县|