列出一个数组里面的重复数字

                //列出一个数组里面的重复数字
                int[] arr = new int[255];//原始数组
                Random ra=new Random ();
                for (int i = 1; i < 256; i++)
                {
                    arr[i - 1] = ra.Next(1, 256);//数组初始化1到255之间的数
                }
                ArrayList arrlist = new ArrayList();
                arrlist.InsertRange(0, arr);
                arrlist.Sort();//把原始数组放到ArrayList中排序.
                for (int i = 0; i < arrlist.Count; i++)
                {
                    Console.Write(arrlist[i].ToString() + ",");//数组排序输出
                }
                Console.WriteLine();

                int[] temp = new int[256];
                foreach (int a in arr)
                {
                    temp[a] +=1;//数组的下标是原始数组中出现的数
                                //数组的值是下标出现的次数
                }

                for (int i = 0; i < 256;i++ )
                {
                    if (temp[i] > 1)
                        Console.WriteLine(i.ToString() + "出现了:" + temp[i].ToString() + "次.");
                }

# 题目重述 给定一个整数数组,要求去除其中的重复数字,使每个元素只出现一次,并保持原有顺序。最终输出去重后的数组元素。 --- # 代码概述 本题通过遍历数组并使用“双指针”技术实现去重:一个指针记录当前不重复元素的末尾位置,另一个遍历整个数组。对于已排序或未排序数组均适用(此处按一般情况处理)。 --- # 给出答案(带注释的代码块) ```c #include <stdio.h> int main() { int n; printf("请输入数组长度: "); scanf("%d", &n); int arr[100]; // 假设最大容量为100 printf("请输入 %d 个整数: ", n); for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); } if (n == 0) { printf("数组为空\n"); return 0; } int newSize = 1; // 去重后的新长度,初始第一个元素必保留 for (int i = 1; i < n; i++) { int isDuplicate = 0; // 查找当前元素是否已在去重部分出现过 for (int j = 0; j < newSize; j++) { if (arr[j] == arr[i]) { isDuplicate = 1; break; } } if (!isDuplicate) { arr[newSize++] = arr[i]; } } // 输出结果 printf("去重后的数组: "); for (int i = 0; i < newSize; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; } ``` --- # 代码解析 1. **输入处理**:读取数组长度和元素。 2. **特殊情况判断**:若数组为空,直接返回。 3. **去重逻辑**: - 使用 `newSize` 表示去重后有效长度。 - 从第二个元素开始遍历,检查其是否已存在于 `arr[0..newSize-1]` 中。 - 若不存在,则将其加入末尾。 4. **输出结果**:打印去重后的元素。 --- # 知识点(列出该代码中遇到的知识点) - **数组去重逻辑**:通过嵌套循环判断元素是否已存在,避免重复录入。 - **双指针思想应用**:外层遍历原数组,内层搜索结果区,实现原地去重。 - **顺序保持策略**:按原顺序逐个判断,确保输出顺序与输入一致。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值