C语言序列是否有序、序列中删除指定数字、序列中整数去重、有序序列合并问题

近期在牛客上面刷题遇到了上述问题,对于刚接触C的我还是有些头疼,所以写这篇文章整理一下思路。

文章推荐人群:刚接触C的广大同志们

我将以 题+代码+简易的思路 的方式进行,提前感谢老铁们的阅览!

                                                           序列是否有序

        代码:

 

 题目中设置2个标记变量,flag1,flag2,满足相邻2个元素升序把flag1设置为1,满足相邻2个元
素降序把flag2设置为1.如果flag1和flag2都是1,那就是乱序。

ps:我一开始的时候写成if(flag1 + flag2 == 1),这种错误写法,因为我忽略了“1 1 1 1”or“9 9 9 9”类似这样的数据,它既可以是升序也可以是降序,所以导致可能出现1+1 = 2这种情况!希望大家不要因为数据思考片面而导致想我一样的低级错误。

序列中删除指定数字

   代码:

 

 要考虑删除多个相同的数字。

j++在这里使用的很妙,核心与下面一题相似,简单的解释放下面了。

                                                        序列中整数去重

 代码:

 

 

关键代码(核心)图解:

 j++同时兼有计数功能,j先使用后++,可以完成真正意义上的清除重复的数值—》举个例子:不会出现10 12 93 75 75(使用上面图片的数据)这样尴尬的打印。

ps:我第一次就是弄了这个尴尬的打印,haha!

                                                       有序序列合并问题

 代码:

 

 

 1. 只是打印出合并后的结果,所以不需要存储。
2. 先在2个数组中找较小的一次打印,等有一个数组中没有元素了,打印另外一个数组剩下的元素。

*因为两个数组中元素个数可能不相同,为了可以完整的打印(符合题意的)所以下面使用了if与else,看代码应该就可以理解了,就不详细说了;

说一下核心:两个数组依次进行比较,i与j是为了方便控制两个数组而引进的,如果元素个数不同比较后(while循环内)退出,接下来进行*的操作。结合代码应该可以很好的理解。

结尾再次感谢老铁们的阅读,初次写CSDN加上刚学C不久,文章内容与代码解释质量不高,也请老铁们谅解,同时也希望大家提出宝贵的指导与建议!

                                                                                                                    最后感谢bit鹏哥

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Joanh_Lan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值