剔除数组中的重复元素

实现,剔除数组中的重复元素,如输入:[1,6,3,2,4,2,5,3],输出[1,2,3,4,5,6]

1,先排序,将相同的值相邻,然后遍历去除重复值

function unique4(array){
 array.sort(); 
 var re=[array[0]];
 for(var i = 1; i < array.length; i++){
  if( array[i] !== re[re.length-1])
  {
   re.push(array[i]);
  }
 }
 return re;
}

2,indexOf只返回元素在数组中第一次出现的位置,如果与元素位置不一致,说明该元素在前面已经出现过,是重复元素

var r,arr = [1,2,3,4,3,2];
r=arr.filter(function(element,index,self){
    return self.indexOf(element) == index;     //
})
console.log(r.sort());
在C语言中,去除数组中的重复元素可以采用多种方法,这里提供一种简单的通用思路,即使用一个临时数组或者哈希集合来存储不复的元素。以下是使用数组的例子: 1. 使用临时数组(适用于元素范围较小的情况): ```c #include <stdio.h> void removeDuplicates(int arr[], int n) { if (n == 0 || n == 1) return; // 如果数组为空或只有一个元素,无需处理 int temp[n], index = 0; for (int i = 0; i < n - 1; i++) { if (arr[i] != arr[i + 1]) { temp[index++] = arr[i]; // 只把不同的元素复制到临时数组 } } temp[index++] = arr[n - 1]; // 将最后一个可能不同的元素添加到临时数组 // 更新原数组 for (int i = 0; i < index; i++) arr[i] = temp[i]; } // 测试函数 int main() { int arr[] = {1, 2, 2, 3, 4, 4, 5}; int n = sizeof(arr) / sizeof(arr[0]); removeDuplicates(arr, n); for (int i = 0; i < n; i++) printf("%d ", arr[i]); return 0; } ``` 2. 使用哈希集合(如标准库的`std::unordered_set`,仅限于支持C++): ```cpp #include <iostream> #include <unordered_set> void removeDuplicates(int arr[], int n) { std::unordered_set<int> uniqueSet; for (int i = 0; i < n; ++i) uniqueSet.insert(arr[i]); arr[0] = *uniqueSet.begin(); // 把第一个元素复制到原数组 for (auto it = uniqueSet.begin() + 1; it != uniqueSet.end(); ++it) arr[1 + (*it - *uniqueSet.begin())] = *it; n = uniqueSet.size(); } // 测试函数 int main() { int arr[] = {1, 2, 2, 3, 4, 4, 5}; int n = sizeof(arr) / sizeof(arr[0]); removeDuplicates(arr, n); for (int i = 0; i < n; i++) std::cout << arr[i] << " "; return 0; } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值