最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實現(xiàn)刪除排序數(shù)組中重復(fù)元素的方法小結(jié)【三種方法比較】

 更新時間:2019年02月23日 11:53:24   作者:PayneWoo  
這篇文章主要介紹了Java實現(xiàn)刪除排序數(shù)組中重復(fù)元素的方法,結(jié)合實例形式對比分析了三種常見的數(shù)組元素刪除算法操作技巧,需要的朋友可以參考下

本文實例講述了Java實現(xiàn)刪除排序數(shù)組中重復(fù)元素的方法。分享給大家供大家參考,具體如下:

題目描述:

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

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

一:通過ArrayList解決

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

ArrayList<Integer> list = new ArrayList<Integer>();
// 去掉數(shù)組中重復(fù)的元素
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()函數(shù)來復(fù)制數(shù)組

時間復(fù)雜度為O(n^2),空間復(fù)雜度為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;
    }
}

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

時間復(fù)雜度O(N),空間復(fù)雜度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;
    }
}

總結(jié):

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

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

在線去除重復(fù)項工具:
http://tools.jb51.net/code/quchong

在線文本去重復(fù)工具:
http://tools.jb51.net/aideddesign/txt_quchong

更多關(guān)于java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)組操作技巧總結(jié)》、《Java字符與字符串操作技巧總結(jié)》、《Java數(shù)學(xué)運算技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》及《Java操作DOM節(jié)點技巧總結(jié)

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

相關(guān)文章

  • springboot項目或其他項目使用@Test測試項目接口配置

    springboot項目或其他項目使用@Test測試項目接口配置

    這篇文章主要介紹了springboot項目或其他項目使用@Test測試項目接口配置,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java多線程下載網(wǎng)圖的完整案例

    Java多線程下載網(wǎng)圖的完整案例

    這篇文章主要給大家介紹了關(guān)于Java多線程下載網(wǎng)圖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • SpringBoot整合ELK使用教程

    SpringBoot整合ELK使用教程

    對于一個運行中的應(yīng)用來說,線上排查問題是一件很頭疼的問題,不管是springboot單應(yīng)用,還是springcloud微服務(wù)應(yīng)用,一旦在生產(chǎn)環(huán)境出了問題,大多數(shù)人第一反應(yīng)就是趕緊去看日志查問題,本文給大家介紹了SpringBoot整合ELK使用教程,需要的朋友可以參考下
    2024-11-11
  • Java IO文件過濾器對命令設(shè)計模式的使用

    Java IO文件過濾器對命令設(shè)計模式的使用

    java io流里面使用到了很多的設(shè)計模式,最典型的就是裝飾模式,還有命令模式,下面分兩部分來講Java IO文件過濾器對命令設(shè)計模式的使用,一起看看吧
    2017-06-06
  • Java?String類和StringBuffer類的區(qū)別介紹

    Java?String類和StringBuffer類的區(qū)別介紹

    這篇文章主要介紹了Java?String類和StringBuffer類的區(qū)別,?關(guān)于java的字符串處理我們一般使用String類和StringBuffer類有什么不同呢,下面我們一起來看看詳細(xì)介紹吧
    2022-03-03
  • 基于FeignClient調(diào)用超時的處理方案

    基于FeignClient調(diào)用超時的處理方案

    這篇文章主要介紹了基于FeignClient調(diào)用超時的處理方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java 自定義Spring框架與Spring IoC相關(guān)接口分析

    Java 自定義Spring框架與Spring IoC相關(guān)接口分析

    Spring框架是由于軟件開發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用的是基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅僅限于服務(wù)器端的開發(fā)
    2021-10-10
  • Java如何獲取Cookie和Session

    Java如何獲取Cookie和Session

    Cookie?和?Session之間主要是通過?SessionId?關(guān)聯(lián)起來的,?SessionId是?Cookie?和?Session?之間的橋梁,這篇文章主要介紹了Java獲取Cookie和Session的方法,需要的朋友可以參考下
    2024-01-01
  • spring boot如何實現(xiàn)切割分片上傳

    spring boot如何實現(xiàn)切割分片上傳

    這篇文章主要介紹了spring boot如何實現(xiàn)切割分片上傳,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • MyBatis-Plus多數(shù)據(jù)源的示例代碼

    MyBatis-Plus多數(shù)據(jù)源的示例代碼

    本文主要介紹了MyBatis-Plus多數(shù)據(jù)源的示例代碼,包括依賴配置、數(shù)據(jù)源配置、Mapper 和 Service 的定義,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05

最新評論

绥中县| 崇义县| 肥西县| 习水县| 柯坪县| 宽城| 镇沅| 济南市| 宁都县| 兴隆县| 乃东县| 鄄城县| 舞阳县| 石城县| 嘉峪关市| 宜川县| 延长县| 喀喇沁旗| 贡山| 澄迈县| 嘉禾县| 厦门市| 镇坪县| 布尔津县| 华池县| 淄博市| 郑州市| 城口县| 赫章县| 侯马市| 涿州市| 图片| 湘西| 卢龙县| 巴楚县| 尉犁县| 会宁县| 沂南县| 双牌县| 衢州市| 张家川|