左右比较大小

来源:互联网 发布:互动投影 软件 编辑:程序博客网 时间:2024/05/24 06:16
/*题目:一个int数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。思路:先定义一个辅助数组rightMin[]来记录原始数组a[i]右边的最小值(包括自己)。再定义一个变量max来记录a[i]左边的最大值(包括自己)。当a[i]的max等于rightMin[i]时,就满足条件。*/#include<iostream>//#define n 7using namespace std;void smallLarge(int arr[],int n){int *rightMin = new int[n];//int rightMin[n];rightMin[n-1]=arr[n-1];//从右到左生成rightMin[]for(int i=n-2;i>=0;--i){if(arr[i]<=rightMin[i+1]){rightMin[i]=arr[i];}else{rightMin[i]=rightMin[i+1];}}//从左到右比较max和rightMin[]的大小int leftMax=0x80000000;for(int i=0;i<n;i++){if(arr[i]>=leftMax){leftMax=arr[i];    if(leftMax==rightMin[i])//cout<<leftMax<<' ';printf("%d ",leftMax);}}}void main(){int matrix[7]={6,10,2,6,19,22,32};smallLarge(matrix,7);return ;}

0 0
原创粉丝点击