Java-一維陣列去重
阿新 • • 發佈:2021-09-05
Java-一維陣列去重
下面使用的方法比較簡單,採用的是雙指標。
/** * 陣列去重 */ @Test public void test1() { int[] nums = {1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9}; // 去重數量 int deNumLen = 0; // 雙指標 // 1. 計算去重之後的陣列大小 int i = 0; for (; i < nums.length;) { // 首判斷 if (i == 0) { deNumLen++; } for (int j = i; j < nums.length; j++) { if (nums[i] != nums[j]) { deNumLen++; i = j; break; } } // 尾判斷 if (i == (nums.length - 1)) { break; } } System.out.println(deNumLen); // 2. 根據計算出的大小建立新陣列 int[] deNums = new int[deNumLen]; // 3. 填充陣列 int index = 0; while (index < deNums.length) { int newI = 0; for (; newI < nums.length;) { // 首判斷 if (newI == 0) { deNums[index] = nums[0]; index++; } for (int newJ = newI; newJ < nums.length; newJ++) { if (nums[newI] != nums[newJ]) { newI = newJ; deNums[index] = nums[newI]; index++; break; } } // 尾判斷 if (newI == (nums.length - 1)) { deNums[index - 1] = nums[nums.length - 1]; break; } } } System.out.println(Arrays.toString(deNums)); }