小白成长记之PTA乙级题 1045

PTA乙级题 1045. 快速排序(25)

【题目链接】


自我感觉这题很难,因为容易超时,先上大佬写的代码。

#include<iostream> 
#include<stdio.h> 
#include<string.h> 
#include<string> 
#include<vector> 
#include<algorithm> 
using namespace std;  
int main(){  
    for(int n;scanf("%d",&n)!=EOF;){  
        vector<int>vec;  
        vector<int>res;  
        int *arr = new int[n];  
        memset(arr,0,n*sizeof(int));  
        int left_max = 0;  
        int right_min = 1000000000;  
        for(int i = 0;i < n;i++){  
            int temp;  
            scanf("%d",&temp);  
            vec.push_back(temp);  
        }  
        for(int i = 0;i < vec.size();i++){  
            if(vec[i] > left_max){  
                arr[i]++;  
                left_max = vec[i];  
            }  
        }  
        for(int i = vec.size()-1;i >= 0;i--){  
            if(vec[i] <= right_min){  
                arr[i]++;  
                right_min = vec[i];  
            }  
        }  
        for(int i = 0; i < n;i++){  
            if(arr[i] == 2){  
                res.push_back(vec[i]);  
            }  
        }  
        sort(res.begin(),res.end());  
        printf("%d\n",res.size());  
        if(res.size()){  
            printf("%d",res[0]);  
            for(int i = 1;i < res.size();i++){  
                printf(" %d",res[i]);  
            }  
            printf("\n");  
        }else{  
            printf("\n");  
        }  
        delete[] arr;  
    }  
    return 0;  
} 

下面是自己写的代码,有几个点运行超时。

#include<stdio.h>
int main()
{
    int n,i,j,flag=0,x=0;
    scanf("%d",&n);
    int a[n],b[n]={0};
    for (i=0;i<n;i++)
    scanf("%d",&a[i]);
    for (i=0;i<n;i++)
    {
        flag=0;
        for (j=0;j<i;j++)
        {
            if (a[j]>=a[i])
            {
                flag=1;
                break;
            }
        }
        for (j=i+1;j<n;j++)
        {
            if (a[j]<=a[i])
            {
                flag=1;
                break;
            }
        }
        if (flag==0)
        {
            b[x]=a[i];
            x++;
        }
    }
    if (x!=0)
    {
        printf("%d\n",x);
        for (i=0;i<x;i++)
        {
            printf("%d",b[i]);
            if (i!=x-1)
            printf(" ");
        }
    }
    else
    printf("%d",x);
    return 0;
}
全部评论

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
大方的大熊猫准备进厂:1.教育背景:你希望从事什么专业的工作你的主修课就是什么;成绩优秀是你应该做的,没什么可描述的,成绩不优秀也许人家在大学忙着创业呢?(成绩优秀不一定是好事,只能说明多元化的大学你上成了高中,没有真正上明白大学,反而体现了你死板,不爱社交,没有别的突出能力) 2.实践经历:你想表达的意思没有说清楚。你是说你会个性化服务,还是你有实习经历。如果没有带来,经济收益,表彰,更好的发展前景,那你还不如说说提升了自己哪些技能。你说有人给你送锦旗我都能明白你优秀,但是你说你会xxxx,你说这话谁信,证据呢。 3.入伍经历:你描述的就是你的工作职责或者你应该做的,并没有体现出来你把这个事情做好了,而且入伍经历并不能证明你能干好你要应聘的工作,不如只写经历其余所有内容都不写。 4.荣誉技能:重点突出一下,但不要过多描述,这些荣誉的含金量懂得都懂。 重点:你要应聘什么工作(具体岗位,实习生不具体),你的期望薪资
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务