java去除已排序數(shù)組中的重復(fù)元素
題目描述
給定一個已排序的數(shù)組,去除數(shù)組中的重復(fù)元素,只保留一個重復(fù)的元素,并且返回新的數(shù)組長度。
要求:
不要給數(shù)組分配額外的空間,你必須使用常量的內(nèi)存大小進行原地操作。
例如:
給出數(shù)組A=[1,1,2],你的函數(shù)調(diào)用之后必須返回長度length=2,并且A現(xiàn)在變成[1,2]。
輸入
一個已排序的數(shù)組,例如[1,1,2]。
輸出
返回數(shù)組新的長度,例如length=2。
快慢指針法
設(shè)置fast指針遍歷數(shù)組,slow指針指向不重復(fù)元素的下一位。
public static int removeDuplicates(int[] nums) { if (nums.length < 1) return nums.length; int slow = 1; for (int fast = 1; fast < nums.length; fast++) { if (nums[fast] != nums[slow - 1]) { nums[slow++] = nums[fast]; } } return slow; }
動畫演示:
擴展
去除已排序數(shù)組中的重復(fù)元素,保留指定位數(shù)。
public static int removeDuplicatesN(int[] nums, int repeatN) { if (nums.length <= repeatN) return nums.length; int index = repeatN; for (int i = repeatN; i < nums.length; i++) { if (nums[i] != nums[index - repeatN]) { nums[index++] = nums[i]; } } return index; }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Assert.assertNotNull()斷言是否是空問題
這篇文章主要介紹了Assert.assertNotNull()斷言是否是空問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10spring簡單MVC實現(xiàn)方法(URL映射及其參數(shù)使用、查詢(id、其他參數(shù))、增加)
這篇文章主要介紹了spring簡單MVC實現(xiàn)方法(URL映射及其參數(shù)使用、查詢(id、其他參數(shù))、增加),方法參數(shù)使用包括在無注解下獲取參數(shù),使用@RequestParam 獲取參數(shù)的方法,每種方法講解的非常詳細,需要的朋友可以參考下2024-01-01BootStrap Jstree 樹形菜單的增刪改查的實現(xiàn)源碼
這篇文章主要介紹了BootStrap Jstree 樹形菜單的增刪改查的實現(xiàn)源碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-02-02java中調(diào)用GDAL DLL的實現(xiàn)方法
本篇文章是對java中調(diào)用GDAL DLL的實現(xiàn)方法進行了詳細的分析介紹,需要的朋友參考下2013-05-05