搞两个指针,一快指针,一个慢指针,删掉重复项,为啥这个不行,删掉有序数组中的重复项
3条回答 默认 最新
关注 【以下回答由 GPT 生成】
问题出在循环中的条件判断部分。在这段代码中,变量
i
在循环外进行了初始化,并且在循环中没有更新,因此条件判断部分的a[i-1]
会使用未被更新的初值,而导致程序运行错误。为了修复这个问题,需要修改循环的条件判断部分。具体的修复方法如下:
- 在循环开始前,添加一个新的整型变量
count
用来记录不重复元素的个数,并且将count
初始化为1,因为数组的第一个元素不会重复。
int count = 1;
-
在循环的条件判断部分,修改为
if (a[count-1] != a[j])
,使用count
作为索引来访问数组元素。 -
在循环的更新部分,将
a[i++] = a[j];
修改为a[count++] = a[j];
,这样可以保证不重复元素被正确地写入到数组中,并且count
的值也会递增。 -
最后,循环结束后,还需要将数组的长度更新为不重复元素的个数,以便后续使用。
修复后的代码如下所示:
#include <stdio.h> int main() { int a[100]; int n, j, len, count; printf("请输入数组个数:\n"); scanf("%d", &n); printf("请输入数组:\n"); for (int i = 0; i < n; i++) { scanf("%d", &a[i]); } len = sizeof(a) / sizeof(a[0]); count = 1; for (j = 1; j < len; j++) { if (a[count - 1] != a[j]) { a[count++] = a[j]; } } len = count; return 0; }
【相关推荐】
- 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7601507
- 这篇博客也不错, 你可以看下编写一个C语言程序,求两个整数中的较大者
- 您还可以看一下 张明阳老师的深入理解C语言指针和结构体课程中的 从底层深入理解指针和指针变量的概念(3)小节, 巩固相关知识点
- 除此之外, 这篇博客: 数据结构(C语言版)实现单链表的创建,赋值随机数,插入,删除,取值,输出中的 定义一个结构体类型 部分也许能够解决你的问题。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用- 在循环开始前,添加一个新的整型变量
悬赏问题
- ¥15 用C语言写离散数学相关问题
- ¥30 如何用python的GephiStreamer连接到gephi中,把Python和Gephi的具体操作过程都展示,重点回答Gephi软件的调试,以及如果代码的端口在浏览器中无法显示怎么处理
- ¥15 ansys机翼建模肋参数
- ¥15 Sumo软件无法运行
- ¥15 如何在vscode里搭建stata的编辑环境?
- ¥15 dify知识库创建问题
- ¥15 如何用C#的chart画1000万个点不卡顿
- ¥15 爬虫技术找到网上看过房源客户的电话
- ¥20 代码:Python随机森林反演生物量数据处理问题
- ¥15 Linux系统的命令行窗口回车变成了换行,无法执行命令了