本文主要是介绍前端JavaScript篇之实现有序数组原地去重方法有哪些?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- 实现有序数组原地去重方法有哪些?
- 方法一:使用 Set 数据结构
- 代码实现:
- 思路说明:
- 方法二:使用双指针遍历
- 代码实现:
- 思路说明:
实现有序数组原地去重方法有哪些?
在 JavaScript 中,实现有序数组的原地去重有多种方法,下面是两种常见的方式。
方法一:使用 Set 数据结构
代码实现:
<!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>
思路说明:
- 创建一个 Set 数据结构,Set 可以自动去重。
- 将原始数组中的元素依次添加到 Set 中,由于 Set 不允许重复元素,重复元素将被自动忽略。
- 最后,将 Set 转回数组的形式,即得到了去重后的有序数组。
方法二:使用双指针遍历
代码实现:
<!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 = 0for (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、双指针遍历
这篇关于前端JavaScript篇之实现有序数组原地去重方法有哪些?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!