[Leedcode][JAVA][第466题][统计重复个数][数组]
生活随笔
收集整理的這篇文章主要介紹了
[Leedcode][JAVA][第466题][统计重复个数][数组]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【問題描述】466. 統計重復個數
由 n 個連接的字符串 s 組成字符串 S,記作 S = [s,n]。例如,["abc",3]=“abcabcabc”。如果我們可以從 s2 中刪除某些字符使其變為 s1,則稱字符串 s1 可以從字符串 s2 獲得。例如,根據定義,"abc" 可以從 “abdbec” 獲得,但不能從 “acbbe” 獲得。現在給你兩個非空字符串 s1 和 s2(每個最多 100 個字符長)和兩個整數 0 ≤ n1 ≤ 106 和 1 ≤ n2 ≤ 106。現在考慮字符串 S1 和 S2,其中 S1=[s1,n1] 、S2=[s2,n2] 。請你找出一個可以滿足使[S2,M] 從 S1 獲得的最大整數 M 。示例: 輸入: s1 ="acb",n1 = 4 s2 ="ab",n2 = 2返回: 2【解答思路】
1. 暴力解法
- 在s1的拼接字符串中 遍歷找到找到一個 s2,記錄使用了s1的個數
- s1總個數/含單個s2循環體/s2總個數
時間復雜度:O(N^2) 空間復雜度:O(1)
2. 優化
1.分為 0 ~(n1-1)次拼接s1,記錄下第0次 時,count(即s2出現的次數) 和 index(即指向s2的坐標)
2.循環找尋壞體,判斷為循壞體的條件是:i!=0(不是第0次) && indexpre_index (當前指向s2的坐標第0次拼接結束后指向s2的坐標)
3.如果找到了循環體,那么return (循環體個數 * (單個循環體包含的s2數目) + 除去所有循環體字符串后,剩余拼接在一起的形成的字符串可以找出s2個數)/ n2,可以配合代碼看
4.沒有找到循環體,那就直接返回迄今為止記錄到的count數/n2,即countRecorder[n-1]/n2
時間復雜度:O(N) 空間復雜度:O(1)
【總結】
1. 數組拼接題目 重復延長思想 找規律
2. 完全不知道如何入手 過于菜 不斷總結整理歸納
參考鏈接:https://leetcode-cn.com/problems/count-the-repetitions/solution/tong-ji-zhong-fu-ge-shu-_jian-dan-yi-dong-by-xiang/
總結
以上是生活随笔為你收集整理的[Leedcode][JAVA][第466题][统计重复个数][数组]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 视频图像不正常的几个表现及解决方法
- 下一篇: 罗技G29方向盘与Unity的连接交互