原创 筆試題:刪除鏈表中重複的節點

#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)>