タイトル説明
ArrayListの頭に尾から順にリストを返すことによって、リストを入力します。
制限時間:C / C ++ 1秒、2秒言語、他の
スペースの制限:C / C ++ 32M、64M言語他の
不快指数:1174732
問題解決のためのアイデア
私はあなたがここでは詳細に説明されていない典型的な例以上のリストとスタックを、学ぶ際にこの問題がある遭遇しました。
難しさの嘘:開始から終了までは、尾の前方からの要求の対象をリンクリストを横切ることができます。
ここで私は2つの一般的なアイデアを考えます:
- 高度な機能を使用して、スタックした後、
- リスト、配列、配列方向に配列を横切ります。
また、オンライン利用収集リカーシブウェイ。
コード
スタック
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
vector<int> answer;
ListNode *p=NULL;
p=head;
stack<int> stk;
while(p!=NULL){
stk.push(p->val);
p=p->next;
}
while(!stk.empty()){
answer.push_back(stk.top());
stk.pop();
}
return answer;
}
};
アレイフリップ:
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
vector<int> answer;
ListNode *p=NULL;
p=head;
while(p!=NULL){
answer.push_back(p->val);
p=p->next;
}
reverse(answer.begin(),answer.end());
return answer;
}
};
再帰:
(ソースネットワーク)
注再帰プロセス分析
class Solution {
public:
vector<int> value;
vector<int> printListFromTailToHead(ListNode* head) {
ListNode *p=NULL;
p=head;
if(p!=NULL){
if(p->next!=NULL){
printListFromTailToHead(p->next);
}
value.push_back(p->val);
}
return value;
}
};
サプリメント
ベクトルの使用状況の概要
データ配列内の最後の追加一back
pop_backするデータ配列の最後を除去
所与の位置データ数で
ヘッド・ポインタ・アレイは、与え始める
最終セルアレイは+1終了ポインタを取得し
、フロントヘッドアレイ得られる基準
最終アレイを与えるバック参照手段は、
ベクトルがどのくらいの最大のある結果MAX_SIZE
現在のベクトルに割り当てられたサイズの容量
サイズは、現在、データの使用サイズの
リサイズ、それは現在の塗りつぶしのデフォルトよりも使用する場合で、大規模な、現在の利用状況データのサイズを変更し
、現在のスペースvecotr割り当てられたを変更する準備サイズ
のデータ項目を消去するためにポインタを削除するために、
電流ベクトルの明確な空
rbeginが逆転(実際には、元の1エンド)後に開始ベクトルポインタに戻りを
リターンの終了ポインタベクトル反転構造を引き裂く(実際に原稿が開始-1 )
空のベクターは、空気か否かが判断される
別のベクターでスワップ交換データ
前記Cベクター:機能の詳細は、機能実現
データコンテナの全てを除去するc.clearを()。
c.empty()は、コンテナが空であるか否かを判断します。
c.erase(POS)POS削除位置データ
c.erase(BEG、エンド)削除[BEG、エンド)間隔データ
c.front()は最初のデータを返します。
c.insert(POS、ELEM)はelemは位置posのコピーの挿入
最後のデータを削除するc.pop_backを()。
c.push_back(ELEM)は、データの最後に追加しました。
容器のサイズにリセットするc.resize(NUM)
c.size(容器内に実際のデータバックの数)。
c.begin()は、コンテナ反復子の最初の要素へのポインタを返す
)c.endを(イテレータコンテナの最後の要素へのポインタを返します