输出数组中大于等于左边所有数且小于等于右边所有数的元素
Question:
一个int数组,;一面数据无任何限制,要求求出所有这样的数a[i],其左边数数都小于等于它,右边的数都大于等于它
1 void smallLarge(int *arr,int n) 2 { 3 int *rightMin=new int[n]; //记录原始数组arr[i]右边(包括自己)的最小值 4 int leftMax; //记录arr[i]左边(包括自己)的最大值 5 rightMin[n-1]=arr[n-1]; 6 for(int i=n-2;i>=0;i--) 7 { 8 if(rightMin[i+1]>arr[i]) 9 rightMin[i]=arr[i]; 10 else 11 rightMin[i]=rightMin[i+1]; 12 } 13 leftMax=arr[0]; 14 for(int i=0;i<n;i++) 15 { 16 if(arr[i]>=leftMax) 17 leftMax=arr[i]; 18 if(leftMax==rightMin[i]) //该数是左边数中的最大数,是右边数中的最小数 19 cout<<arr[i]<<" "; 20 } 21 }