原创 筆試題:刪除鏈表中重複的節點
#include <iostream> #include <queue> using namespace std; struct ListNode { int val; struct ListNode *ne
原创 筆試題:求數組中和爲sum的乘積最小的一對組合
#include <iostream> #include <vector> using namespace std; class Solution { public: vector<int> FindNumbersWit
原创 筆試題:用二叉樹構造雙向鏈表
#include <iostream> #include <string.h> using namespace std; struct Node { Node *left;//相當於雙向鏈表的prev指針。 Nod
原创 歡迎來挑戰:極限打印99乘法表
#include <iostream> using namespace std; int main() { //凡是有兩個for,while循環的,有 if,有?:的,有Switch的全部Out! int coun
原创 筆試題:用兩個棧實現隊列
#include <iostream> #include <stack> using namespace std; template<typename T> class QUEUE { public: QUEUE
原创 筆試題:求和爲sum的連續數列
#include <iostream> #include <vector> using namespace std; class Solution { public: vector<vector<int> > FindContinuou
原创 筆試題:亂序求第n大(小)的數。我能想到的最好的方法。
#include <iostream> using namespace std; //當然用快速排序也是一樣的。 class Heap { public: Heap(){} void Insert(int a[],int len,i
原创 筆試題:o(n)解法求最大回文串(Manacher)
#include <iostream> using namespace std; void Grial(char *s) { int maxindex = 0;//init max length int m
原创 筆試題:逆序一個棧的遞歸與非遞歸實現
//非遞歸實現。 #include <iostream> #include <stack> using namespace std; void Deal(stack<int> &st,int val) { stack<i
原创 筆試題:由兩個棧構造min棧
#include <iostream> #include <stack> using namespace std; template<typename T> class Min { public: void PUSH(T
原创 筆試題:判斷棧的push(),pop()序列是否正確
#include <iostream> #include <stack> using namespace std; bool Grial(int a[],int n,int b[],int m) { if(n!=m)re
原创 算法題:數組中只出現一次的兩個數字
class Solution { public: void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) { int count = 0;
原创 筆試題:求二叉樹中和值爲sum的所有路徑
#include <iostream> #include <stack> using namespace std; struct Node { Node *left; Node *right; int da
原创 筆試題:求二叉樹第n層的節點數。
#include <iostream> #include <string.h> using namespace std; template<typename T> struct Node { T data; No
原创 筆試題:判斷一個樹是不是平衡二叉樹
class Solution { public: int length(TreeNode* t) { if(t==NULL)return 0; return length(t->left)>