1. 程式人生 > >微軟100題(93)找出陣列中比左邊的大比右邊的小的元素

微軟100題(93)找出陣列中比左邊的大比右邊的小的元素

在一個int數組裡查詢這樣的數,它大於等於左側所有數,小於等於右側所有數

思路:如果一個元素師左邊最大的,又是右邊最小的,那麼就是要找的元素,所以一開始求出所有的右邊最小陣列rightmin,然後從左往右判斷截止當前元素最大的是,如果和對應的rightemin陣列中一樣,就找到了這樣的元素

void ThePivotElements(int data[],int len)
{
	int* rightmin = new int[len];
	int r_min = data[len-1];
	for (int i = len-1;i>=0;i--)
	{
		if(data[i]<r_min)
			r_min = data[i];
		rightmin[i] = r_min; 
	}
	int l_max = data[0];
	for (int i= 0;i<len;i++)
	{
		if(data[i]>l_max)
			l_max = data[i];
		if(l_max == rightmin[i])
			cout<<data[i]<<endl;
	}
}