一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久国产精品永久免费网站 | 国产成人无精品久久久 | 日韩欧美推理片免费在线播放 | 日本福利视频一区 | 亚洲 在线 日韩 欧美 | 人皮高跟鞋在线观看 | chinesexxxx高中生gay| 九九久久精品 | 国产精品美女久久久久网站 | 91午夜在线观看 | 日本三级在丈面前被耍了 | 国产人成激情视频在线观看 | 免费看成年视频网页 | 亚洲上最大成网人站4438 | 激情三级做爰在线观看激情 | 视频精品一区二区三区 | 99re视频精品全部免费 | 国内精品久久久久小说网 | 成人免费影院 | free哆拍拍免费永久视频 | 午夜亚洲精品久久久久久 | 精品夜夜澡人妻无码AV蜜桃 | 精品一区二区三区 不卡高清 | 国产麻豆精品视频 | 美女扒开两腿露出尿口的视频 | 日本黄色高清视频网站 | 国产精品久久久久久久久久久搜索 | 亚洲男女在线 | eeuss18影院www国产 | 国产精品热久久毛片 | 美女扒开胸罩露出奶了无遮挡免费 | 婷婷丁香色综合狠狠色 | 2021国产精品露脸在线 | chinese老太granny chinese国产人妖hd | 手机在线观看网站免费视频 | 亚欧有色在线观看免费版高清 | 狠狠做五月深爱婷婷天天综合 | 国产精品久久国产精品99 gif | 狠狠干狠狠插 | 欧美亚洲视频在线观看 | 成全视频在线观看免费 |