代码
#include<stdio.h>
int main(){
int nums[20]={},i=0,j,n=0,max=0,min=0,res=0;
char c;
for(;;){
scanf("%c",&c);
if(c==']'){
n=i-1;
break;
}
scanf("%d",&nums[i++]);
}
for(i=0;i<=n;i++){
max=0;
min=0;
for(j=0;j<=n;j++){
if(nums[j]>nums[i]) max=1;
if(nums[j]<nums[i]) min=1;
}
if(max==1&&min==1) res+=1;
}
printf("%d",res);
return 0;
}
友情提示
1、题目实际就是要求你求非最大且非最小的数有几个,底层逻辑比较好理解。
2、这题目麻烦就麻烦在怎么输入,想了很多种方法都有问题,最后在题解里看到一个天才想出了这种朴实无华却如此有用的方法。因为输入无论是有‘[’还是有‘,’都是属于字符,整体的输入刚好是以一个字符一个整型的格式输入的,故而此方法完美符合。(我一直在往getchar如何和scanf搭配而不让程序产生误解的方向等等去想,毕竟输入中无空格,没想到过用两个scanf,一个输入字符一个输入整型,如此方便且明了,感谢这位天才)
3、max和min都是作为标记,反映这个数组中是否既存在比这个数大的又存在比这个数小的数。
题目描述
给你一个整数数组 nums
,统计并返回在 nums
中同时至少具有一个严格较小元素和一个严格较大元素的元素数目。
输入输出格式
输入格式
输入一个整数数组(list) nums
。
输出格式
输出在 nums
中同时至少具有一个严格较小元素和一个严格较大元素的元素数目的整数结果。
输入输出样例1
输入 [11,7,2,15]
输出 2
解释(可选) 元素 7
:严格较小元素是元素 2
,严格较大元素是元素 11
。 元素 11
:严格较小元素是元素 7
,严格较大元素是元素 15
。 总计有 2
个元素都满足在 nums
中同时存在一个严格较小元素和一个严格较大元素。
输入输出样例2
输入 [-3,3,3,90]
输出 2
说明提示
判断一个数是否有严格最小元素和严格最大元素,是指在数组中有大于该数的值和小于该数的值。