原创 C++實現優先隊列——最小堆,d路堆及配對堆

優先隊列實現,此處的優先隊列是用於Huffman樹實現的(具體參考上一篇文章)。所以用於比較的都是huffman樹的node的頻率,希望讀者見諒。 最小堆(二叉): template <typename T> class MinHeap

原创 不知不覺,寫了一個編譯器(二)

當我們完成了詞法分析之後,就可以進行語法分析了。(詞法分析鏈接:不知不覺,寫了一個編譯器(一)) 語法分析的主要內容是,對於我們自己規定的語法,判斷哪些token可以在一起,哪些token不行。我們在這裏,主要使用建立first,foll

原创 【Operating System】 基於Android爲進程添加級別及調試

最近在學習 操作系統 看到每個進程都有 pid 等很多屬性。 那我們可以做到修改或者添加進程的某個屬性, 進而影響操作系統的運行嗎? 本文 以 Android 系統爲例,嘗試爲進程添加級別屬性。 第一步 是要找到進程屬性的定義的地方。在/

原创 LeetCode.Problem3 Longest Substring Without Repeating Characters

話不多說,先上代碼。 int lengthOfLongestSubstring(string s) { int l=0;int j=0;int i,t; while(j<s.size()){ str

原创 OpenGL.Project 1.Changing color and Dragging Points

在美國接觸到的第一個project是OpenGL。功能是要實現鼠標點擊變色以及移動。第一次接觸OpenGL,所以花了很多時間在學習上面,其實語法是和C++一樣的,只不過用了很多庫,因此在庫函數上面花了很多精力。這是一個二維的界面,所以並不

原创 LeetCode.Problem 1 Two Sum

話不多說,先上代碼。 vector<int> twoSum(vector<int> &numbers, int target) { vector<int> result; unordered_map<in

原创 OpenGL.Project2.Bezier Curve

這次的OpenGL的project是完成了Bezeir曲線的生成,主要是兩種方式。 第一種是不斷地遞歸生成一些點,去逼近。 第二種是應用de casterjau算法生成Bezier曲線。 上代碼了 // Include standard

原创 C++實現Huffman的編解碼

Huffman編碼主要是通過統計各元素出現的頻率,進而生成編碼最終達到壓縮的目的。 這裏是Huffman樹中節點的結構。 typedef struct Tree { int freq;//頻率 int key;//鍵值

原创 LeetCode.Problem2 Add two numbers

話不多說,先貼代碼。ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { int k;ListNode *l3;ListNode l4(0); l3=&l4;

原创 OpenGL.Project.3 Bezier in 3d Space

這次project的內容是將上次的貝茲爾曲線擴展到三維空間,並求了它的主法線,次法線,切線。以動點的形式顯示。 // Include standard headers #include <stdio.h> #include <stdlib

原创 LeetCode.Problem 4 Median of Two Sorted Arrays

問題還是可以的,因爲時間要求是O(Log(m+n)),所以我第一個想法就是分治。那對於查找的話,就是採取二分查找。習慣了數組,爲了改成容器還花了一陣時間。上代碼。 class Solution { public: double findK

原创 Java,Socket&TCP編程 實現多線程端對端通信與文件傳輸

做了一個Java的項目,利用TCP實現了端對端通信與文件傳輸。下面是實現的效果: 然後開啓四個客戶端: 實現羣聊效果: 實現私聊效果: 實現屏蔽效果: 實現文件羣發效果: 實現端對端文件傳輸: 服務器工作過程: 實現過程主

原创 LeetCode.Problem 5 Longest Palindromic Substring

求最長迴文字串,本來可以用動態規劃做。我選取的是從中間往兩邊擴的方法,分爲奇數和偶數兩種情況。奇數就是從一個字符的左右邊開始擴,偶數是從兩個字符間開始往兩邊擴,所以分爲兩種情況。然後記錄最長的長度,通過子串函數返回所求子串。上代碼。cla

原创 不知不覺,寫了一個編譯器(一)

首先,假如我們自己建立了一門語言,如何才能讓它能夠編譯運行呢。 第一步,我們要識別語言中的字符串,他們可能是:關鍵字,字符,數字 等。因此,我們要進行詞法分析(LexicalAnalysis)。比如下列表格:我們要將它們歸類,並告訴我們的

原创 LeetCode 刷題筆記 之 數組自乘

題目如下:Given an array of n integers where n > 1, nums, return an array output such that output[i] is equal to the product