原创 Python 歸併排序實現
歸併排序實質就是不斷的對一個數組進行左右區間的劃分, 當劃分到最小塊的時候,則左右兩邊均只有一個元素時這個時候通過merge 將他們在該塊進行排序合併。最後將排序好的塊在寫入原數組。然後一次進行更大塊的合併。這樣每次合併的兩個塊在各自的
原创 Objective-C中@,[], /, *等符號說明iOS基礎入門
我們在程序中看到大量的減號、中括號、中括號、@等等陌生符號,我們下面進行一一解釋: 1)減號(或者加號) 減號表示 爲實例方法,必須使用類的實例纔可以調用的。 比如C語言中,一個方法的寫法可能是: void hello(bool ishe
原创 LeetCode算法題——相同的樹
要判斷給定的兩顆二叉樹是否相同,就遞歸遍歷它們的所有子節點並進行判斷代碼如下: //判斷兩顆樹是否相同 public bool IsSameTree(TreeNode p, TreeNode q) {
原创 LeetCode算法題——最長同值路徑
int max = 0; //保存當前最長路徑值 public int LongestUnivaluePath(TreeNode root) { if (root
原创 Unity OnPointerClick 和 OnMouseDown以及雙擊實現
簡單分析 OnPointerClick 和 OnMouseDown 實現雙擊的代碼如下 using UnityEngine; using UnityEngine.EventSystems; public class TestDemo
原创 vscode----OmniSharp不能正常使用
有一天突然vscode打開項目無法使用C#代碼提示了 相關提示:No Razor files detected in workspace, delaying language server start 後經過排查發現是新版本有bug 所
原创 用兩個棧實現隊列
用兩個棧可以實現隊列。 可以讓棧A當做出口,棧B當做入口。每當入棧的時候全都入到B中,而出棧的時候判斷棧A中是否爲空,不爲空就出A,爲空就把B中棧全入到A中,然後再從A中出。 即 代碼如下:稍微加了點異常處理 不過結果不影
原创 麻將胡牌算法——C#
這裏只介紹普通的麻將胡牌算法,也就是7個對子或者 1個對子+3*N; N = 三個順子或者三個一樣的 ,其中字牌(東南西北中發白)不能算順子。 首先對於每張牌 它有牌的的數字 1-9,牌的種類 (萬條筒以及字) 所以先封裝一個牌的包裝類。
原创 經典排序算法——雞尾酒排序
雞尾酒排序就是冒泡排序改進的一種,不同於冒泡排序,雞尾酒是雙向的,它每一次都會先進行從左到右的升序排列,再從右到左的降序排列。 就像: 2,4,10,3,33 第一次:2,4,3,10,33 第二次:2,3,4,10,33 但是需要考
原创 聯機算法——求最大子序和
給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。 示例: 輸入: [-2,1,-3,4,-1,2,1,-5,4], 輸出: 6 解釋: 連續子數組 [4,-1,2,1] 的和最大,爲
原创 非遞歸的快速排序
對於非遞歸的快速排序,推薦使用棧,和遞歸的快速排序都是不斷的去調整每次遍歷的空間,並通過區間的目標值,一般取區間的第一個值來進行左右區間的劃分,再遞歸調用Partition,和遞歸不同的是使用棧可以成對的進行管理區間,每次Partitio
原创 Lua——快速排序
開始學習lua,打算先用lua來寫一下排序算法,這是個開始。希望能堅持下去。先是快排代碼如下(就不解釋了邏輯和C#一樣只是語法格式問題) myarr = {1,3,2,33,22,100} function quicksort(arr
原创 147. 對鏈表進行插入排序
對鏈表進行插入排序。 插入排序的動畫演示如上。從第一個元素開始,該鏈表可以被認爲已經部分排序(用黑色表示)。 每次迭代時,從輸入數據中移除一個元素(用紅色表示),並原地將其插入到已排好序的鏈表中。 插入排序算法: 插入排序是迭代的,
原创 面試算法題——數字刪除指定個數使結果
給定一個正整數,如果刪除其中若干數字,怎麼刪除能保證剩下的數字組成最大,編程實現,不長於O(n),輸入給定的正整數和要刪除的數字個數 5349 2 ==》 59 思路: 先求這個數字的遞減序列,然後刪除遞減序列的最後一
原创 56. 合併區間
給出一個區間的集合,請合併所有重疊的區間。 示例 1: 輸入: [[1,3],[2,6],[8,10],[15,18]] 輸出: [[1,6],[8,10],[15,18]] 解釋: 區間 [1,3] 和 [2,6] 重疊, 將它們合併