原创 找出亂序數組中最小(最大)的k個數字

輸入n個整數,找出其中最小的k個數。例如輸入4、5、1、6、2、7、3、8這8個數字,則最小的4個數字是1、2、3、4。 這道題最簡單的思路莫過於把輸入的n個整數排序,排序之後位於最前面的k個數就是最小的k個數。這種思路的時間複雜度是O(

原创 複雜鏈表的複製-OC實現2種方式

輸入一個複雜鏈表(每個節點中有節點值,以及兩個指針,一個指向下一個節點,另一個特殊指針指向任意一個節點,虛線部分),返回結果爲複製後複雜鏈表的head。 解題思路: 1、遍歷鏈表,複製鏈表中的每個結點,並將複製的結點插入到該結點的後面。

原创 仿寫《今日頭條》的tag選擇頁面

在《今日頭條》中,該頁面是用來選擇自己感興趣的頻道標籤從而改變segment的。標籤功能應用的需求現在也比較多,主要使用collectionview中item可以移動的方法和思路來寫這樣的頁面。 關鍵點 在collectionview

原创 枚舉字符串的排列, 八皇后,枚舉&回溯2種解法

輸入一個字符串,打印出該字符串中字符的所有排列。 例如輸入字符串abc,則打印出由字符a、b、c所能排列出來的所有字符串abc, acb , bac、bca, cab cba。 由於字符串的長度不同, 使用for循環嵌套枚舉是不行的, 需

原创 求二叉樹的路徑和

給定一個二叉樹,找出所有路徑中各節點相加總和。 一個有效的路徑,指的是從根節點到葉節點的路徑。這樣就是一條有效的路徑,求這個路徑上值的和,以及對應路徑上的值. 樹的遍歷有 前序,中序,後序 , 層次遍歷4種, 我們需要找到一條有效的路徑

原创 在O(1)找到棧中的最小值

定義棧的數據結構,請在該類型中實現一個能夠得到棧的最小元素的min函數。 在該棧中,調用min、push及pop的時間複雜度都是O(1). push和pop本來都是O(1),這個不需要擔心,但是獲取最小值的話,  如果在棧裏添加一個成員變

原创 二叉樹鏡像,根據數組生成一個完全二叉樹

額, 先看下什麼是完全二叉樹 ,葉子只能出現在最下面的二層 最下層的葉子一定集中在左部的連續位置 倒數第二層 若有葉子結點 一定在右部連續位置 如果結點的度爲1 ,則該結點只有左孩子 同樣結點的二叉樹,完全二叉樹的深度最小 這是一個完全二

原创 適配ios13

更新Xcode之後,新項目需求,新建項目發現多瞭如圖1所示兩個新的文件SceneDelegate.h和SceneDelegate.m 運行之後發現黑屏,無論是真機還是模擬器都不行,換到iOS12的手機上則可以正常運行。 查看官方文檔,S

原创 反轉鏈表,小技巧

定義一個函數,輸入一個鏈表的頭結點,反轉該鏈表並輸出反轉後鏈表的頭結點。 很經典的一個面試題, 考察下是否對鏈表熟悉, 代碼量不大, 很適合面試的時候手寫. @interface Node : NSObject + (Node *)n

原创 判斷括號是否成對出現,嵌套是否正確

給定一個只包括 '(',')','{','}','[',']' 的字符串,判斷字符串是否有效。 有效字符串需滿足: 左括號必須用相同類型的右括號閉合。 左括號必須以正確的順序閉合。 https://leetcode-cn.com/prob

原创 約瑟夫環問題,多種方式處理

約瑟夫環問題,這是一個很經典算法 問題描述:N個人圍成一圈,從第一個人開始報數,報到m的人出圈,剩下的人繼續從1開始報數,報到m的人出圈;如此往復,直到所有人出圈。(模擬此過程,輸出出圈的人的序號) 當初還沒有學過數據結構,鏈表這些東西都

原创 二維數組查找是否包含數字,時間複雜度優化

在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。 請完成一個函數,輸入這樣的一個二維數組和一個整數.返回在二維數組是否包含此數字. 例如下面的二維數組就是每行、每列都遞增排序。如果在這個數組中查找

原创 iOS 正確的獲取相冊權限

獲取相冊權限,網上的寫法,大多都感覺有點問題,不是特別完美.  方案1: 直接給了返回值, 那對於PHAuthorizationStatusNotDetermined這種的,後面可能權限給了不允許, 然後還去調保存相冊就會出問題.  這種

原创 給定一個字符串,翻轉字符串中的每個單詞,附c語言實現

把一個字符串按照單詞反轉過來,比如 "the sky is in blue",反轉成"blue in is sky the"  用OC的就比較簡單了, 1.先用空格切割這個字符串, 2.然後反轉數組, 3.最後在把數組用空格join起來就

原创 查找是否包含同源異構子串,其他字符串面試題

    //給定長度爲m的短字符串s1,以及一個長度爲n的長字符串str,m<n    //問能否在str中找到一個長度爲m的連續子串使得這個子串剛好由s1的m個字符組成,順序無所謂,返回任意滿足條件的一個子串的起始位置 第一種思路,比較