11.9 至 11.17 四道典型题记录: Counter 弹出 | map函数 | 子集求取 | 有序字符桶分装
11.9 至 11.17 四道典型題記錄: Counter 彈出 | map函數 | 子集求取 | 有序字符桶分裝
?? 昨天休息的時候一直在想應該學習哪種語言,我想這也是好多人發愁無法下手的原因之一,今年找工作的時候發現更多的研究崗位需要的是 C 語言 或 C++ 語言,而對于一些大型互聯網企業則更喜歡 Java 語言,對于我而言,我更想做一些深度學習相關的工作,單純地覺著這個行業有意思,能夠支持我更長久的學習下去,雖然 搞電路和硬件設備的走得更穩定長久,不過對于我而言,我更相信學習新的、有趣的、更能激發自我動力的學科,其實沒有那么多好猶豫的,想做什么就趕緊去做,不要想那么多,擔憂焦慮最咩意思了!我現在就想學 py3 那就好好學,算法、計組、網絡、操作系統 都會跟上腳步系統學習一下。不想了,學起來。
 ??本節主要是 關于py3的幾個函數的使用以及個人認為非常不錯的幾道題的記錄,一定要總結一下,就當復習了。
 ? 部分代碼借鑒他人,提前說一聲,這并不都是我自己碼出來的。~~
791. 自定義字符串排序 (Counter 彈出)
題目鏈接:791. 自定義字符串排序 
 題目大意:給定兩個字符串 order 和 s 。order 的所有字母都是 唯一 的,并且以前按照一些自定義的順序排序。
 對 s 的字符進行置換,使其與排序的 order 相匹配。更具體地說,如果在 order 中的字符 x 出現字符 y 之前,那么在排列后的字符串中, x 也應該出現在 y 之前。
 返回 滿足這個性質的 s 的任意一種排列 。
例如:
輸入: order = "cba", s = "abcd" 輸出: "cbad" 解釋: “a”、“b”、“c”是按順序出現的,所以“a”、“b”、“c”的順序應該是“c”、“b”、“a”。 因為“d”不是按順序出現的,所以它可以在返回的字符串中的任何位置。“dcba”、“cdba”、“cbda”也是有效的輸出。輸入: order = "cbafg", s = "abcd" 輸出: "cbad"- 解題思路:與 6230. 長度為 K 子數組中的最大和 的使用思路一樣,需要靈活地將存儲的數組進行存在元素的判斷。
- 時間復雜度: O ( M + N ) O(M+N) O(M+N) ,其中 M 和 N 分別是字符串 order 和 s 的長度。
- 空間復雜度: O ( M ) O(M) O(M)
?
764. 最大加號標志 map函數(靈活運用 dmap函數)
題目鏈接:764. 最大加號標志 map函數
 題目大意:
 在一個 n x n 的矩陣 grid 中,除了在數組 mines 中給出的元素為 0,其他每個元素都為 1。mines[i] = [xi, yi]表示 grid[xi][yi] == 0
返回 grid 中包含 1 的最大的 軸對齊 加號標志的階數 。如果未找到加號標志,則返回 0 。
一個 k 階由 1 組成的 “軸對稱”加號標志 具有中心網格 grid[r][c] == 1 ,以及4個從中心向上、向下、向左、向右延伸,長度為 k-1,由 1 組成的臂。注意,只有加號標志的所有網格要求為 1 ,別的網格可能為 0 也可能為 1 。
例如:
 
- 解題思路:遍歷 題目,使用動態數組繼續每個點的數據記錄,進行四次for循環記錄滿足要求的1的最小個數。需要自左向右,自右向左、自上而下以及自下而上的四次遍歷,確定最小的 十字。代碼中用到兩次 map,非常地有趣,簡單說一下:
 (1)anned = set(map(tuple,mines)) 將mines的內容轉換為元素 tuple 之后使用set()函數進行去重操作 ,map 在這里可以充當數據類型轉換的作用;
 (2) max(map(max,dp)) map()的存在讓此語句更容易梳理一些,其實可以寫成max([max(dp[i,:]) for i in range(len(dp))]) 。
- 時間復雜度: O ( N 2 ) O(N^2) O(N2) ,N為矩陣的行數或列數
- 空間復雜度: O ( N 2 ) O(N^2) O(N2)
?
805. 數組的均值分割 子集求取(map巧用非常好地一個用法 值得學習!)
題目鏈接:805. 數組的均值分割 子集求取
 題目大意:給定你一個整數數組 nums
 我們要將 nums 數組中的每個元素移動到 A 數組 或者 B 數組中,
 使得 A 數組和 B 數組不為空,并且 average(A) == average(B) 。
 如果可以完成則返回true , 否則返回 false 。
 注意:對于數組 arr , average(arr) 是 arr 的所有元素的和除以 arr 長度。
- 解題思路:位運算獲取子數組和 思路如下: - 對于 nums = [1,2], i 從 1到3
- i = 01 則為 nums[0] = 1
- i= 10 則為 nums[1] = 2
- i= 11 則為 nums[0]+nums[1] = 3。
 
- 時間復雜度: O ( n × 2 n 2 ) O(n \times 2^{\frac{n}{2}}) O(n×22n?),n為數組長度
- 空間復雜度: O ( n × 2 n 2 ) O(n \times 2^{\frac{n}{2}}) O(n×22n?)
?
792. 匹配子序列的單詞數(有序字符桶分裝)
題目鏈接:792. 匹配子序列的單詞數
 題目大意:
 給定字符串 s 和字符串數組 words, 返回 words[i] 中是s的子序列的單詞個數 。
 字符串的 子序列 是從原始字符串中生成的新字符串,可以從中刪去一些字符(可以是none),而不改變其余字符的相對順序。
 例如, “ace” 是 “abcde” 的子序列。
- 解題思路:細細品味,這道題 太 tm 棒了,這個 桶 真滴香。
- 時間復雜度: O ( n + ∑ i = 0 m ? 1 ∣ w i ∣ ) O(n + \sum_{i=0}^{m-1} |w_i|) O(n+∑i=0m?1?∣wi?∣),n和m分別為s和words的長度, O ( w i ) O(w_i) O(wi?)為words[i]的長度。
- 空間復雜度: O ( m ) O(m) O(m)
總結
?? 努力 奮斗!最近學一下 粵語 背一下 張國榮哥哥的歌曲,感覺 他的歌 好棒好棒,好有力量!像“默默向上游”的”現實欺弄不擔憂,我要與他決斗,挺著胸對抗命運,努力握實我拳頭“、“我愿那苦痛變力量,默默忍淚向上游”,讓我感覺到一種前所未有的力量在里面,和 邁克杰克遜的灑脫率真不一樣,張國榮哥哥有一種不服輸、抗爭、頑強不屈的精神在其中,他要把事情做好、做到極致,他愛自己的事業、愛自己的人生,要全身心地去做、去努力,正如歌曲中的“求能用心”、“求能用功”、“求能做個好鼓手”。我要學習,要繼續努力,“努力不會有極限”,“若遇失敗再重頭”。這算法不好學,那就更用心、更用功,我還就不信有學不會的!
總結
以上是生活随笔為你收集整理的11.9 至 11.17 四道典型题记录: Counter 弹出 | map函数 | 子集求取 | 有序字符桶分装的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: php问答系统模板,tipask问答系统
- 下一篇: 【软件通信协议】1. 详细解析TCP/I
