国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - Java實現刪除排序數組中重復元素的方法小結【三種方法比較】

Java實現刪除排序數組中重復元素的方法小結【三種方法比較】

2021-07-17 11:06PayneWoo Java教程

這篇文章主要介紹了Java實現刪除排序數組中重復元素的方法,結合實例形式對比分析了三種常見的數組元素刪除算法操作技巧,需要的朋友可以參考下

本文實例講述了java實現刪除排序數組中重復元素的方法。分享給大家供大家參考,具體如下:

題目描述:

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

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

一:通過arraylist解決

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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;
    }
}

總結:

數組下標(指針)與臨時變量,是解決數組相關面試題的兩大法寶**

ps:本站還有兩款比較簡單實用的在線文本去重復工具,推薦給大家使用:

在線去除重復項工具:https://tool.zzvips.com/t/quchong/

在線文本去重復工具:https://tool.zzvips.com/t/txtquchong/

希望本文所述對大家java程序設計有所幫助。

原文鏈接:https://blog.csdn.net/wu2304211/article/details/52743589

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 隔壁老王国产在线精品 | 一区二区三区在线看 | 精品久久99 | 国产精品久久 | 伊人久久艹 | 国产一区中文字幕 | 国产黄色小视频 | 久久精品一 | 欧美影院 | 亚洲国产精品视频一区 | 日韩高清一区二区 | 亚洲成a人| 久久久成人动漫 | 国产毛片网站 | 亚洲成人自拍 | 国产色爱综合网 | 欧美日韩免费 | 九九久久精品 | 欧美一区永久视频免费观看 | 一区二区三区视频 | 亚洲一区二区国产 | 高清三区 | 欧美特级 | 日本一区二区高清不卡 | 成人看片毛片免费播放器 | 午夜电影 | 成人看片毛片免费播放器 | 日日操操 | 99久久精品免费看国产一区二区三区 | 91网页版 | 四虎永久在线观看 | 欧美在线播放 | 高清久久 | 五月婷婷在线视频 | 五月婷综合 | 日韩精品视频在线观看免费 | 亚洲电影在线 | 国产欧美日韩一区 | 天天综合久久 | 日韩在线免费视频 | 日本高清无卡码一区二区久久 |