原创 iOS中深淺拷貝

面試時我們總會被問到你理解深拷貝和淺拷貝的區別嗎  淺拷貝是複製一個新的指針,指向同一塊內存區域 深拷貝是內容拷貝,拷貝數據到一塊新區域內存,指針指向拷貝的數據去 strong是淺拷貝 可變字符串或數組(NSMutable)在copy後會

原创 算法-冒泡排序優化版

冒泡排序是一種最基本的交換排序,把相鄰的元素兩兩比較,根據大小來交換元素的位置. 原始的冒泡排序是穩定排序,需要遍歷所有元素,時間複雜度是O(N^2) 我用OC來寫這個算法,分別寫了三個,後兩個是在基礎上進行優化的,以最後一個優化的爲準.

原创 25匹馬賽跑,有一個賽場,只有五個賽道,沒有計時器,只能通過目測來記錄快慢,求出第三3快的馬要多少場比賽?

25匹馬賽跑,有一個賽場,只有五個賽道,沒有計時器,只能通過目測來記錄快慢,求出第三3快的馬要多少場比賽? 思路:我們分5組: A組: A1   A2   A3    A4   A5 B組: B1   B2   B3    B4   B5

原创 題目:已知 sqrt (2)約等於 1.414,要求不用數學庫,求 sqrt (2)精確到小數點後 10 位

2019年阿里面試題中的一道題目:已知 sqrt (2)約等於 1.414,要求不用數學庫,求 sqrt (2)精確到小數點後 10 位。 * 考察點 基礎算法的靈活應用能力(二分法學過數據結構的同學都知道,但不一定往這個方向考慮;如果學

原创 算法-選擇排序

選擇排序就是每一輪選出最小者交換到左側的思路,或者選出最大這交換到最右側的思路 這種排序的最大優勢就是省去多餘的元素交換 OC代碼: - (NSArray *)selectSort:(NSArray *)sort { NSMut

原创 算法-插入排序

- (void)logInsertionSortingArray { NSMutableArray * arr = @[@(16),@(1),@(2),@(9),@(7),@(12),@(5),@(3),@(8),@(13),@

原创 iOS-對象的本質-一個OC對象佔多少內存

我們平常敲的Objective-C代碼,底層實現其實是C/C++代碼.那麼一個OC對象佔用多少內存. iOS開發中Objective-C和swift用的是Clang/LLVM來編譯的. 使用的clang編譯器編譯成cpp,xcodebui

原创 數據結構-單鏈表

單鏈表是一種鏈式存取的數據結構,用一組地址任意的存儲單元存放線性表中的數據元素. 以結點來表示,每個結點是由元素 + 指針組成. 以結點的序列表示線性表稱作線性鏈表(單鏈表),單鏈表是鏈式存取的結構. 單鏈表設頭指針head指向開始結點

原创 什麼是紅黑樹

紅黑樹是一種自平衡二叉查找樹,是一種數據結構. 二叉查找樹的特性: 1.左子樹上所有結點的值小於或等於它的根節點的值. 2.右子樹上所有結點的值均大於或等於它的根節點的值. 3.左右子樹也分別爲二叉排序樹. 二叉查找很方便,查找所需的最大

原创 算法邏輯題-海盜分金幣問題

有5個海盜,獲得了100枚金幣,他們約定一個分配方案. 商議方式:1.有5個海盜輪流提出分配方案                 2.如果超出半數海盜(包括提出者)同意該方案,則按照該方案分配                 3.如果同意

原创 跳躍表是什麼

加入我們要開發一個遊戲裏面類似拍賣行的搜索功能,我們要支持輸入道具名稱的精準查詢和不輸入名稱的全量查詢. 拍賣行商品數量幾十萬件,對應數據庫商品表的幾十萬條記錄,按照商品名稱精準查詢好辦,可以直接衝數據庫查出來, 如果沒有商品名稱的全量查

原创 算法-動態規劃

有一道經典題目:有一座高度是10級臺階的樓梯,從下往上走,每跨一步只能向上1級或者2級臺階,要求程序求出一共多少中走法. 第一種方法:暴力的利用排列組合,寫一個多層嵌套循環遍歷出所有的可能性,但是時間複雜度是指數級的. 這裏就用到了動態規

原创 Flutter環境配置遇到的坑

在配置Flutter的環境時,我真的是超級無語了,各種坑. 鑑於國內的環境,配置環境按照國內環境配置來走:中文網Flutter環境配置 最後出現這個就ok了,中途報哪個配置有問題,按照提示走就行了,有的時候你可能需要讓子彈飛一會兒,畢竟網

原创 iOS總結-APP啓動過程-main()函數執行前

APP啓動的快慢,直接決定了用戶的體驗好壞,畢竟往往第一印象是真的很重要的! APP啓動分爲三個階段:main函數執行前,main函數執行後,首屏渲染完成後. main啓動前: 首先說下Mach-O文件  Mach-O文件格式是OSX與i

原创 iOS總結-有關CAAnimation

有關動畫,我們可能用UIView的動畫,或是會用到CABasicAnimation比較多一點. 有關CAAnimation的基礎知識結構圖,我簡單畫了個圖 CABasicAnimation通過設置keyPath來設置類型 duration