69. 二叉樹的層次遍歷
class solution
res.push_back(tmp);
} return res;
}};
7. 二叉樹的序列化和反序列化
注意小細節和各種函式的用法。
class solution
if (j!=data.length())
return results;
}public:
string serialize(treenode * root)
else res=res+','+to_string(h.front()->val);
h.push(h.front()->left);
h.push(h.front()->right);
h.pop();
}//把末尾多餘的,#去掉
while (res[res.size()-1]==',' ||res[res.size()-1]=='#')
res.erase(res.size()-1,1);
return res;
}treenode * deserialize(string &data)
i++;
if (i>=vals.size()) break;
if (vals[i]=="#") tmp->right==null;
else
h.pop();
}return head;
}};
70. 二叉樹的層次遍歷 ii
最後把遍歷結果倒過來即可。
class solution
res.push_back(level);
}reverse(res.begin(),res.end());
return res;
}};
71. 二叉樹的鋸齒形層次遍歷
class solution
if (!order)
order=!order;
res.push_back(level);
}return res;
}};
242. 將二叉樹按照層級轉化為鍊錶
class solution
res.push_back(head->next);
}return res;
}};
178. 圖是否是樹
判斷圖是不是樹的兩個標準:1.n個節點有n-1條邊 2.通過n-1條邊可以訪問到全部n個節點;
實現起來有幾點要注意:1.使用set記錄已經訪問到的節點;2.使用vector>重構所給出的邊的關聯資訊,這樣可以不用每次重新遍歷一遍給出的邊關係(已知序號為0-n-1可以直接用hash表,注意vector的初始化資訊);3.遍歷時使用auto更好寫。
class solution }}
return record.size()==n;
}};
137. 轉殖圖
第一步:通過node找到所有的nodes,並存在乙個vector裡;
第二步:根據nodes,新建每個node對應的newnode(對應關係存在map裡);
第三步:建立neiborghs關係。
class solution
for (auto a:list)
}return relation[node];
}vectorgetnodes(undirectedgraphnode *node)
}h.pop();
}return list;
}};
618. 搜尋圖中節點
按照廣搜,最先找到的點就是最近的點。
class solution
h.pop();
}return null;
}};
605. 序列重構
這個題也相當於拓撲排序,給的seqs相當於幾組關係,每乙個數指向後面乙個數;返回false的條件有三個:1.可能重構出多個陣列(判斷方法為佇列裡不能同時有兩個元素,或者給的關係比org短) 2.重構的陣列和org不一樣(在bfs裡判斷) 3.其他越界情況
class solution
}if (lengthh;
for (int i=1;i<=n;i++)
vectorres;
while (h.size()==1)
h.pop();
//如果當前恢復的數字和org不一樣,立刻終止;
if (res[res.size()-1]!=org[res.size()-1]) return false;
}return res.size()==n;
433. 島嶼的個數
bfs寫法,盡量用bfs;
class solution
if (in_bound(grid,x+1,y)&&grid[x+1][y])
if (in_bound(grid,x,y-1)&&grid[x][y-1])
if (in_bound(grid,x,y+1)&&grid[x][y+1]) }}
bool in_bound(vector> &grid,int i,int j)
};
598. 殭屍矩陣
class solution
bool in_bound(vector> &grid,int i,int j)
};
611. 騎士的最短路線
注意要把走過的點設定成障礙,防止來回跳。
class solution ;
if (source.x==destination.x && source.y==destination.y)
return 0;
int step=0;
queueh;
h.push(source);
grid[source.x][source.y]=1;
while (!h.empty())
};
573. 郵局的建立 ii
這道題如果從空地出發找到所有去房子的距離會超時;由於房子是少的,我們考慮從房子出發找到到達每個空地的最近距離,將距離累加,所有房子都能到達且距離最小的點即是郵局。注意一定要建立乙個num陣列記錄有幾個房子能到達這個空地,最後確認所有房子都能到達才有效。
class solution }}
int res=int_max;
int flag=false;
for (int i=0;i> &grid,int x,int y,
vector> &distance,
vector> &visited,
vector> &num)
};
431. 找無向圖的連通塊
注意vector內可能要求有序。
class solution
h.pop();
}sort(graph.begin(),graph.end());
res.push_back(graph);
}return res;
}};
120. 單詞接龍
這道題我一開始的思路是將字典內的單詞構建乙個無向圖,將字母只差一位的單詞連線起來。如下**:
class solution
queueh;
h.push(start);
v.insert(start);
int step=1;
while (!h.empty())
return true;
}};
但是最後乙個資料超時了,因為字典內的單詞太多了而能用到的單詞不多。所以轉換思路直接使用廣搜,列舉每個單詞每個位置上的字母,在字典中查詢是否存在,如果存在則加入佇列,直到找到end。
需要注意的兩點:1.使用erase()去掉已經修改過的單詞,不必再額外使用去重集合,注意把start刪除掉;
2.end有可能不在字典中,記得加入字典;
class solution
}word[i]=oldchar;}}
step++;
}return -1;
}};
鋼琴第四課
因為此前每天都練琴,曲譜也都記住了,所以,週六,臨時被老師喊去時,非常自信。學到了很多知識。1.連貫性方面 連貫性要注意 其實,連貫性在於對曲目的熟練程度,手指的靈活程度,還有不同音之間的連貫跳躍 音要連續 不同音,要連續連線在一起 這個音落下,上個音才起來 2.節奏方面 四分音符要短快,彈到了,立...
Android OpenGL教程 第四課
android opengl 教程 第四課旋 在這一課裡,我將教會你如何旋轉三角形和四邊形。左圖中的三角形沿y軸旋轉,四邊形沿著x軸旋轉。我們增加兩個變數來控制這兩個物件的旋轉。這兩個變數加在程式的開始處其他變數的後面。它們是浮點型別的變數,使得我們能夠非常精確地旋轉物件。浮點數包含小數字置,這意味...
Linux基礎 第四課
nfs伺服器設定 安裝sudo apt get install portma 安裝sudo apt get install nfs kernel server 配置檔案etc exports 增加共享的目錄 ip2位址以及許可權 啟動服務 service portmap start 然後啟動服務 s...