實現棧中元素的排序

題目描述

請編寫一個程序,按升序對棧進行排序(即最大元素位於棧頂),要求最多隻能使用一個額外的棧存放臨時數據,但不得將元素複製到別的數據結構中。

給定一個int[] numbers(C++中爲vector<int>),其中第一個元素爲棧頂,請返回排序後的棧。請注意這是一個棧,意味着排序過程中你只能訪問到第一個元素。

測試樣例:
[1,2,3,4,5]
返回:[5,4,3,2,1]
class TwoStacks {
public:
	vector<int>twoStacksSort(vector<int>numbers) 
	{
		vector<int>tmpStack;
		while(!numbers.empty())
		{
			int tmpVal=numbers.back();
			numbers.pop_back();
			if (tmpStack.empty())
			{
				tmpStack.push_back(tmpVal);
			}
			else
			{
				if(tmpVal<tmpStack.back())
				{
					while(!tmpStack.empty()&&tmpStack.back()>tmpVal)
					{
						numbers.push_back(tmpStack.back());
						tmpStack.pop_back();
					}
				}
					tmpStack.push_back(tmpVal);
				}
			}	
		numbers.clear();
		while(!tmpStack.empty())
			{
				numbers.push_back(tmpStack.back());
				tmpStack.pop_back();
			}
		return numbers;
	}
};



發佈了41 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章