Skip to content

1101(Quick Sort)自己的做法 #10

@likmin

Description

@likmin

测试点3过不去,输出格式不对,知道为什么吗?最后没回车
思路是这样的,
第一次循环输入,并找到当前节点前面的最大值。
第二次循环找到当前节点右边的最小值
第三次循环,输出主元
`#include
#include
#include
using namespace std;
int main()
{
int N,a[10010],LeftMax[100010],RightMin[100010];//LeftMax数组用于记录当前左边最大数,RightMin数组用于记录当前右边最小数
scanf("%d", &N);
int big=-1,small=9999999999;

for (int i = 1; i <=N; i++) {
	scanf("%d", &a[i]);
	if (i == 1) {
		LeftMax[1] = a[1] - 1;
		continue;
	}
	if (a[i] > big) {
		LeftMax[i + 1] = a[i];
		big = a[i];
	}
	else LeftMax[i + 1] = LeftMax[i];
}
RightMin[N] = a[N]+1;
for (int i = N ; i >= 1; i--) {
	if (a[i] < small) {
		RightMin[i - 1] = a[i];
		small = a[i];
	}
	else RightMin[i - 1] = RightMin[i];
}

vector<int> v;
for (int i = 1; i <=N ; i++) {
	if (a[i]<=RightMin[i]&&a[i]>=LeftMax[i] ) {
		v.push_back(a[i]);	
	}
}
printf("%d\n",v.size());
sort(v.begin(), v.end());
int flag = 1;
for (int i = 0; i < v.size(); i++) {
	if (flag) {
		printf("%d", v[i]);
		flag = 0;
	}
	else {
		printf(" %d", v[i]);
	}
}
  printf("\n");
return 0;

}`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions