【六种方式】去除数组中的重复元素 您所在的位置:网站首页 c语言删除数组中重复元素 【六种方式】去除数组中的重复元素

【六种方式】去除数组中的重复元素

2024-07-09 10:00| 来源: 网络整理| 查看: 265

文章目录 📫1. 问题描述📌2. 思路探究📦3. 代码实现排序 + 双指针双层循环枚举 + 标志位数组覆盖计数排序判断

📫1. 问题描述

给定一个数组,判断数组中的元素是否重复?

给定为整型数组,或者字符串去重?

不使用集合类,怎么去重?

不使用集合类,怎么保证【稳定】去重?

📌2. 思路探究

在这里插入图片描述 判断是否有重复

集合类的contains()方法计数排序

去重复

Set集合排序 + 双指针(稳定或不稳定)枚举 + 标志位 📦3. 代码实现

集合类直接在放入时判断是否包含即可

排序 + 双指针

先对数组中的序列排序

[1, 1, 2, 3, 3, 5, 5, 5, 7, 8, 9, 9]

然后双指针将不重复元素放入新的结果集res数组中

怎么保证稳定

使用归并排序(稳定排序)遇到重复元素,选取第一次出现的位置(保证稳定)

1 i 1_i 1i​、 1 j 1_j 1j​,选 1 i 1_i 1i​

class Solution { /** * 【归并排序 + 双指针】 * * @param arr * @return */ public static int[] removeRepeat_sort(int[] arr) { mergeSort(arr, 0, arr.length - 1); int slow = 0, fast = 1; while (fast >> 1; int temp[] = new int[arr.length]; mergeSort(arr, low, pivot); mergeSort(arr, pivot + 1, high); merge(arr, low, pivot, high, temp); } private static void merge(int[] arr, int low, int pivot, int high, int[] temp) { int p1 = low, p2 = pivot + 1; int index = low; while (p1


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有