IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> c语言删除数组中的重复元素 -> 正文阅读

[数据结构与算法]c语言删除数组中的重复元素

初始代码,可根据自己的需求进行修改

#include<stdio.h>
int removeDuplicates(int *nums,int numsSize);
int main(){
	// 初始化数组
	int num[5] = {1,1,1,1,1};
	int length = removeDuplicates(num,5);
	// 打印数组长度
	printf("%d\n",length);
	// 遍历数组
	for(int i=0;i<length;i++){
		printf("%d ",num[i]);
	}
	return 0;
} 

一、数组元素无序删除

int removeDuplicates(int *nums,int numsSize){
 	if(!nums||numsSize==0){
 		return 0;
	 }
    int i = 0;
    // 从头开始比较 
    for (i = 0; i < numsSize; i++) {
        // 拿出下一个元素 
        for (int j = i + 1; j < numsSize; j ++) {
            // 若两个元素相等,则从后往前依次覆盖前边的元素 
            if (nums[i] == nums[j]) {
                for (int k = i; k < numsSize - 1; k ++) {
                    nums[k] = nums[k + 1];
                }
                // 数组长度减一 
                numsSize --;
                // 防止删除元素后少比较一个位置 
                j = i;
            }
        }
    }
    return numsSize;
}

二、数组元素有序删除

 //处理数组是有序的情况   双指针法 
 int removeDuplicates(int *nums,int numsSize){
 	if(!nums||numsSize==0){
 		return 0;
	 }
	// j进行数组遍历  初始化为1 
	int j = 1;
	/* 
	   1.j与j-1的元素进行比较,如果j与j-1不相同,替换,i++,j++,
	   2.当遇到j与j-1的元素相同时,表示i这个位置的元素与j-1位置的元素是重复的,此时i不动,j++,重复1 
	*/
	// i表示数组中重复元素位置,这个位置是可以替换的 ,初始化为1,i记录当前的位置, 
	int i = 1; 
	for(j;j<numsSize;j++){
		// 两个元素不相等,i往后走 
		if(nums[j]!=nums[j-1]){
			// i保存的是当前重复元素被替换 ,如果没有重复元素,i==j 
			nums[i] = nums[j];
			// i往后走 
			i++;
		}
	}
	// i的大小就是数组的大小 
	return i; 
 }
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-21 12:38:31  更:2021-10-21 12:41:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:42:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码