题解 | #有序序列判断#

有序序列判断

http://www.nowcoder.com/practice/22e87f8a8d764a6582710f38d1b40c6e

通过计数来判断是否有序

针对此题我的想法是:将前一个数和后一个数做差,根据大于小于的情况进行计数,如果计数的情况为n-1,那么就说明此序列两两相减的趋势相同,所以可对其进行是否有序的判断

int main()
{
    int i,arr[100],n,cnt1=0,cnt2=0;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }
    for(i=0;i<n-1;i++)
    {
       if(arr[i]-arr[i+1]>=0)
           cnt1++;//降序计数
       else if(arr[i]-arr[i+1]<=0)
           cnt2++;//升序计数
    }
    if(cnt1==n-1||cnt2==n-1)//一共n个数,两两相减的到n-1个结果
        printf("sorted");
    else
        printf("unsorted");
}
全部评论
你这个有点小问题,for循环里边让if和else if都有了arr[i]-arr[i+1]==0的判断符合条件时只会进入if里边,比如你输入任意一组升序数,只要任意位置存在两个相等的数,判断结果都会是无序. 应该把if和else里=都去掉,然后加一个else当arr[i]-arr[i+1]==0时cnt1,cnt2都加上个1
8 回复 分享
发布于 2022-08-10 16:55
这个方法挺好的
点赞 回复 分享
发布于 2022-03-13 10:32
我去,NB啊,这个逻辑
点赞 回复 分享
发布于 2022-06-05 16:54
妙蛙种子直呼内行!!!
点赞 回复 分享
发布于 2022-08-06 18:22
66666666666
点赞 回复 分享
发布于 2022-10-06 15:12 浙江
看完我人傻了,逻辑真的6啊
点赞 回复 分享
发布于 2022-10-30 23:52 河南
牛牛牛
点赞 回复 分享
发布于 2022-12-09 21:30 山西
我不理解i=0;i
点赞 回复 分享
发布于 2023-02-05 09:42 海南
这个方法在1 2 3 3 5是unsorted,但是题意是sorted,所以不对
点赞 回复 分享
发布于 2023-11-10 08:09 吉林
知道什么是我若不修行 见你如井中蛙观天上月 我若修行 见你如一粒浮游见青天
点赞 回复 分享
发布于 10-14 19:07 河南

相关推荐

Natrium_:这时间我以为飞机票
点赞 评论 收藏
分享
10-11 17:30
湖南大学 C++
我已成为0offer的糕手:羡慕
点赞 评论 收藏
分享
57 6 评论
分享
牛客网
牛客企业服务