這篇文章主要為大家展示了“java中如何刪除排序數(shù)組中的重復(fù)項(xiàng)”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“java中如何刪除排序數(shù)組中的重復(fù)項(xiàng)”這篇文章吧。
專注于為中小企業(yè)提供網(wǎng)站制作、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)文縣免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000多家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
給定一個(gè)排序數(shù)組,你需要在原地刪除重復(fù)出現(xiàn)的元素,使得每個(gè)元素最多出現(xiàn)兩次,返回移除后數(shù)組的新長(zhǎng)度。
不要使用額外的數(shù)組空間,你必須在原地修改輸入數(shù)組并在使用 O(1) 額外空間的條件下完成。
示例 1:
給定 nums = [1,1,1,2,2,3],
函數(shù)應(yīng)返回新長(zhǎng)度 length = 5, 并且原數(shù)組的前五個(gè)元素被修改為 1, 1, 2, 2, 3 。
你不需要考慮數(shù)組中超出新長(zhǎng)度后面的元素。
示例 2:
給定 nums = [0,0,1,1,1,1,2,3,3],
函數(shù)應(yīng)返回新長(zhǎng)度 length = 7, 并且原數(shù)組的前五個(gè)元素被修改為 0, 0, 1, 1, 2, 3, 3 。
你不需要考慮數(shù)組中超出新長(zhǎng)度后面的元素。
答案:
1public int removeDuplicates(int[] nums) {
2 int n = nums.length;
3 if (n < 2)
4 return n;
5 int pos = 2;
6 for (int i = 2; i < n; ++i)
7 if (nums[i] != nums[pos - 2])
8 nums[pos++] = nums[i];
9 return pos;
10}
解析:
題目中說(shuō)的是排序的數(shù)組,那這就簡(jiǎn)單了。代碼比較簡(jiǎn)單就不再介紹,下面再來(lái)看一下其他的解法。
1public int removeDuplicates(int[] nums) {
2 int i = 0;
3 for (int n : nums)
4 if (i < 2 || n > nums[i - 2])
5 nums[i++] = n;
6 return i;
7}
8
9public int removeDuplicates(int[] nums) {
10 int n = nums.length, count = 0;
11 for (int i = 2; i < n; i++)
12 if (nums[i] == nums[i - 2 - count])
13 count++;
14 else
15 nums[i - count] = nums[i];
16 return n - count;
17}
解法都大同小異,基本思想還是沒(méi)變。
Java的特點(diǎn)有哪些 1.Java語(yǔ)言作為靜態(tài)面向?qū)ο缶幊陶Z(yǔ)言的代表,實(shí)現(xiàn)了面向?qū)ο罄碚?,允許程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程。 2.Java具有簡(jiǎn)單性、面向?qū)ο?、分布式、安全性、平臺(tái)獨(dú)立與可移植性、動(dòng)態(tài)性等特點(diǎn)。 3.使用Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。
以上是“java中如何刪除排序數(shù)組中的重復(fù)項(xiàng)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!