在 JavaScript 中,实现有序数组的原地去重有多种方法,下面是两种常见的方式。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>有序数组原地去重-Set方法</title>
</head>
<body>
<script>
function removeDuplicates(arr) {
const uniqueArray = [...new Set(arr)]
return uniqueArray
}
// 示例
const originalArray = [1, 2, 2, 3, 4, 4, 5]
const uniqueArray = removeDuplicates(originalArray)
document.write('<p>原始数组: ' + originalArray.join(', ') + '</p>')
document.write('<p>去重数组: ' + uniqueArray.join(', ') + '</p>')
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>有序数组原地去重-双指针遍历</title>
</head>
<body>
<script>
function removeDuplicates(arr) {
let slowPointer = 0
for (let fastPointer = 1; fastPointer < arr.length; fastPointer++) {
if (arr[fastPointer] !== arr[slowPointer]) {
slowPointer++
arr[slowPointer] = arr[fastPointer]
}
}
return arr.slice(0, slowPointer + 1)
}
// 示例
const originalArray = [1, 2, 2, 3, 4, 4, 5]
const uniqueArray = removeDuplicates(originalArray)
document.write('<p>原始数组: ' + originalArray.join(', ') + '</p>')
document.write('<p>去重数组: ' + uniqueArray.join(', ') + '</p>')
</script>
</body>
</html>
slowPointer
和一个快指针 fastPointer
。fastPointer
指向的元素与 slowPointer
指向的元素不同时,将 fastPointer
指向的元素赋值给 slowPointer
后面的位置。slowPointer + 1
个元素,即为去重后的有序数组。这两种方法都能在原地实现有序数组的去重,你可以选择其中一种方法进行使用。
持续学习总结记录中,回顾一下上面的内容:
实现有序数组原地去重方法有哪些?Set、双指针遍历