原创 c++實現最壞時間爲線性時間的快速選擇算法

上圖是算法導論第三版第九章9.3所給出的步驟,根據這個步驟可以得到下面的代碼 /* 找中位數,只有五個數,直接排序取中間那個即可 */ int findMedian(vector<int> & nums, const int & le

原创 c++單鏈表實現隊列

 通過兩個鏈表節點指針實現隊列,一個當作隊頭,一個當作隊尾,入隊就是往尾節點後插入,退隊就是刪除頭節點 template<class T> struct ListNode { T data; ListNode<T> *next;

原创 雙隊列模擬棧

 兩個隊列模擬棧 只要保證一個棧爲空就行  入棧直接往不爲空的那個隊列入隊即可 出棧時將不爲空的隊列留下一個,剩下全部入隊到另一個隊列中,然後彈出剩下的那個元素 #include <queue> template<class T> c

原创 vs集成qt實現簡單的計算器

可能沒有考慮到所有情況,但基本的計算可以做到! Calculator.h #pragma once #include <QtWidgets/QDialog> #include "ui_Calculator.h" #include "c

原创 QT實現可編輯的QLabel(QEditLabel)

可編輯的QLabel主要是用於某些填字遊戲,例如數獨,具體的實現是通過在QStackedWidget切換QLabel和QLineEdit來實現的,代碼也非常的簡單,具體怎麼用還需要自己添加新的內容 QEditLabel.h #pragm

原创 單鏈表的輸出,逆序,排序

ListNode節點的定義 template<class T> struct ListNode { T val; ListNode* next; ListNode(T val) { this->val = val; thi

原创 c++ 二維凸包 Graham 掃描線算法模板

該算法是在gift-warping算法的基礎上通過排序來預處理數據然後降低時間複雜度的 #include <iostream> #include <memory> #include <cstdlib> #include <cstdio>

原创 自己實現棧和數組和vector

stack.h #pragma once template<class T> class Stack { public: Stack(); Stack(const Stack<T> &s); ~Stack(); void pu

原创 四平方數和定理 leetcode 279 完全平方數

記錄一下四平方數和定理的解法 int numSquares(int n) { while (0 == (n & 0x3)) { n >>= 2; } if (7 == (n & 0x7)) { return 4; }

原创 c++順序表實現棧

通過capacity控制最大容量,超過就擴容,可以避免多次插入時的擴充操作  template<class T> class Stack { public: Stack(); Stack(const size_t & length)

原创 單鏈表實現法雷序列

 法雷序列節點的定義 struct FareyListNode { int numerator; // 分子 int denominator; // 分母 FareyListNode *next; FareyListNode(i

原创 洛谷 P3368 樹狀數組(區間修改 單點查詢)

就是區間修改和單點查詢,這個題目可以用來檢查自己寫的對不對 #include <iostream> #define lowbit(x) (x)&(-(x)) using namespace std; int n; int c[50000

原创 c++ Dijsktra算法鄰接表版本和鏈式前向星版本的實現(堆優化版本)

鄰接表版本 #include <iostream> #include <queue> #include <cstring> #include <algorithm> #include <cstdio> #include <limits.

原创 車廂調度問題(隊列和棧的實現)

根據隊列和棧的性質 隊列找尾部最大的車廂號 棧找尾部最小的車廂號 棧、隊列、數組可用STL或者自己實現 #pragma once #include "vector.h" #include "queue.h" #include "stac

原创 c++ Java 二維凸包 Andrew 算法模板

模板題鏈接 P2742 [USACO5.1]圈奶牛Fencing the Cows /【模板】二維凸包 先排序(先按 y 再按 x ),然後計算凸包,一共兩次掃描,第一次計算下凸包,第二次計算上凸包(計算上凸包的時候可以不用判斷top,如