91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

高清| 科技| 孝昌县| 萨嘎县| 台中县| 武邑县| 平利县| 福建省| 开封县| 彩票| 通辽市| 雅安市| 阳朔县| 虎林市| 茶陵县| 连城县| 荔浦县| 邵阳市| 吉隆县| 潮州市| 华阴市| 临沧市| 洛扎县| 阿尔山市| 进贤县| 大庆市| 福海县| 建平县| 北京市| 定西市| 阿勒泰市| 元氏县| 新竹县| 新营市| 扶余县| 广德县| 天祝| 阿鲁科尔沁旗| 新安县| 朝阳区| 阳信县|