原创 Swift-技巧(一)縮放並填充圖片

摘要 直接操作圖片來實現它的縮放或者填充多餘空間,首選 UIGraphicsBeginImageContext 函數來實現,它就相當於一個畫布,你甚至可以用它來塗鴉。 最近有一個需求,就是將圖片先等比例縮放到指定大小,然後將空餘出來空間

原创 數據結構與算法-基礎(十一)AVL 樹

AVL 樹 是最早時期發明的自平衡二叉搜索樹之一。是依據它的兩位發明者的名稱命名。 AVL 樹有一個重要的屬性,即平衡因子(Balance Factor),平衡因子 == 某個節點的左右子樹高度差。 AVL 樹特點總結下來有: 每個節點的

原创 Framework - 性能統計

摘要 近期對接客戶時,客戶方希望提供 SDK 的性能、內存、隱私支持等一些數據,所以就對 SDK 進行了一些性能測試。 在用表格統計整理這些數據時,突然發現,經常用統計的方式看 SDK 的相關數據,似乎也是一個發現優化的好方式。 所以想記

原创 數據結構與算法-基礎(十)平衡二叉搜索樹

摘要 二叉搜索樹的特性-節點的左側部分比它小,右側部分比它大,使得二叉搜索樹在查找節點有二分法的效果,也提高了它的添加和刪除處理,畢竟添加和刪除也是先查找位置,然後再處理。 平衡二叉搜索樹就是持續保證這樣的高效性,進入正題: 二叉搜索樹

原创 數據結構與算法-基礎(九)二叉搜索樹

摘要 如果使用線性表存放 n 個元素時,時間複雜度是 O(n)。如果使用二分法搜索,可以降低時間複雜度,爲 O(logn),但是添加和刪除的平均時間複雜度是 O(n)。 使用二叉搜索樹,可以讓添加、刪除、搜索的最壞時間複雜度優化到 O(l

原创 數據結構與算法-基礎(八)遍歷二叉樹

遍歷是數據結構中的常見操作,就是把所有的元素遍歷一遍。 線性結構的遍歷無非是兩種,正序遍歷和逆序遍歷,也就是從頭依次遍歷或者從尾依次遍歷。 二叉樹的遍歷方式有 4 種,是根據不同的節點訪問順序來區分: 遍歷方法 訪問順序 備註

原创 數據結構與算法-基礎(七)完全二叉樹

完全二叉樹判斷(判斷) 完全二叉樹的葉子節點只會出現最後兩層,且最後一層的葉子節點都靠左對齊。根據定義來看,度爲 1 的節點只會在左子樹,度爲 1 的節點要麼是 1 個,要麼是 0 個。 完全二叉樹屬於二叉樹,即每個節點的度最大爲 2。

原创 數據結構與算法-基礎(六)二叉樹基礎

摘要 二叉樹是樹結構中最基礎,也是最重要的結構。由二叉樹衍生出多種不同類型的二叉樹,當學習完二叉樹的不同衍生結構後,會發現,都不能逃離二叉樹的定義和特定。 樹結構 生活中會遇到很多樹形結構的場景,比如公司的組織架構、文件目錄等等。使用樹

原创 數據結構與算法-基礎(五)隊列(Qeque)

隊列的定義 隊列也是一種線性表,只能在頭尾兩端進行操作,主要特點: 隊尾:只能從隊尾添加元素,叫做入隊(enQueue) 隊頭:只能從隊頭移除元素,叫做出隊(deQueue) 先進先出元素,First In First Out(FIFO)

原创 數據結構與算法-基礎(四)棧(Stack)

摘要 前幾期探究過動態數組或者鏈表後,接下來的棧就可以使用線性表的結構再次封裝實現。在實現棧 的時候發現,在線性表的基礎上,實現起來更簡單。 棧這種數據結構應用到很多場景,比如網頁之間的跳轉等。 棧的定義 棧是一種特殊的線性表,只能在一

原创 數據結構與算法-基礎(三)- 循環鏈表(補充)

上一期整體探討了一下單向鏈表。在這基礎上補充兩個點,分別是單向循環鏈表和雙向循環鏈表。從字面中可以看出是將鏈表形成個環結構,區別在於這個環是隻能一個方向還是兩個方向循環。 單向循環鏈表 單向循環鏈表可以理解爲將單向鏈表的最後一個節點指向第一

原创 數據結構與算法-基礎(二)單向鏈表

摘要 上期共同探究了下動態數組的添加、刪除等實現方法,想要再回顧一下的話,點擊我去再看看。接下來繼續探究數組。 其實,動態數組有個明顯的缺點,就是有可能造成內存空間的大量浪費。那麼有什麼辦法可以做到用多少就給多少呢?這時,咱接着探究一下鏈

原创 數據結構與算法-基礎(一)動態數組

摘要 日常開發中,會經常創建數組,並使用數組的添加、刪除等方法。現在就是要以數據結構的方式,來探究一下這些方法是怎麼實現的。 本文結構先總結 Array 常用的 API,接下來由簡單到複雜,由基礎到組合思路實現,最後優化細節。你可以按照文

原创 Swift-Button 的 highlighted(高亮)

摘要 在學習小程序時,看到小程序中的一個樣式屬性 hover-class,通過設置這個屬性,就可以給點擊的控件添加一個高亮效果。所以也就萌生了在 Swift 也實現一個類似的功能的想法,開幹。 下面代碼是給 view 控件添加一個高亮效果

原创 Swift- 設置 UILabel 內邊距

摘要 拿來即用短時間效率雖然挺高的,但是拿來的東西沒有消化一次,就無法得心應手的使用它。 這次的探索思路就是,查詢官方文檔,設置不同的值測試單個方法中參數的變化,之後測試兩個方法的執行順序,處理的思路,最後思考總結。 在總結方法的處理邏輯