<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ?LeetCode刷題實戰(zhàn)446:等差數(shù)列劃分 II - 子序列

          共 2137字,需瀏覽 5分鐘

           ·

          2021-11-26 19:45

          算法的重要性,我就不多說了吧,想去大廠,就必須要經(jīng)過基礎(chǔ)知識和業(yè)務(wù)邏輯面試+算法面試。所以,為了提高大家的算法能力,這個公眾號后續(xù)每天帶大家做一道算法題,題目就從LeetCode上面選 !

          今天和大家聊的問題叫做?等差數(shù)列劃分 II - 子序列,我們先來看題面:
          https://leetcode-cn.com/problems/arithmetic-slices-ii-subsequence/

          給你一個整數(shù)數(shù)組 nums ,返回 nums 中所有 等差子序列 的數(shù)目。
          如果一個序列中 至少有三個元素 ,并且任意兩個相鄰元素之差相同,則稱該序列為等差序列。
          例如,[1, 3, 5, 7, 9]、[7, 7, 7, 7] 和 [3, -1, -5, -9] 都是等差序列。
          再例如,[1, 1, 2, 5, 7] 不是等差序列。
          數(shù)組中的子序列是從數(shù)組中刪除一些元素(也可能不刪除)得到的一個序列。
          例如,[2,5,10] 是 [1,2,1,2,4,1,5,10] 的一個子序列。
          題目數(shù)據(jù)保證答案是一個 32-bit 整數(shù)。

          示例


          示例 1
          輸入:nums = [2,4,6,8,10]
          輸出:7
          解釋:所有的等差子序列為:
          [2,4,6]
          [4,6,8]
          [6,8,10]
          [2,4,6,8]
          [4,6,8,10]
          [2,4,6,8,10]
          [2,6,10]

          示例 2
          輸入:nums = [7,7,7,7,7]
          輸出:16
          解釋:數(shù)組中的任意子序列都是等差子序列。


          解題


          class?Solution?{
          public:
          ????int?numberOfArithmeticSlices(vector<int>& a)?{
          ????????typedef?long?long?LL;
          ????????int?n = a.size();
          ????????// 表示到i位置為止差值為j的等差序列
          ????????vector<unordered_mapint>> f(n);
          ????????int?res = 0;
          ????????// 枚舉位置
          ????????for?(int?i = 0; i < n; i ++ )
          ????????????for?(int?k = 0; k < i; k ++ ) {
          ????????????????// 枚舉差值
          ????????????????LL j = (LL)a[i] - a[k];
          ????????????????auto?it = f[k].find(j);
          ????????????????int?t = 0;

          ????????????????// 其中「將 nums[i] 加到以 nums[j] 為尾項,
          ????????????????// 公差為 d 的弱等差子序列的末尾」這一操作,
          ????????????????// 實際上就構(gòu)成了一個至少有三個元素的等差子序列,
          ????????????????// 因此我們將循環(huán)中的 f[j][d] 累加,即為答案。

          ????????????????// 是否找到k位置之前的差值為j的前一個等差數(shù)列差值
          ????????????????// 如果找到這樣的等差數(shù)列 證明前面至少有兩個數(shù)
          ????????????????// 加上現(xiàn)在這個 至少三個數(shù)
          ????????????????// map的value表示的是以nums[j] 為結(jié)尾、差為map的key且數(shù)組長度為2的等差子序列數(shù)量,
          ????????????????// 當(dāng)發(fā)現(xiàn)nums[i]-nums[j]等于前面的key,就可以把nums[i]加入進去剛好變成長度為3的等差子序列,而這個數(shù)量也就是map的value。
          ????????????????// 在遍歷過程中將所有滿足條件的value相加即可
          ????????????????if?(it != f[k].end()) {
          ????????????????????// t為f[k][j]的值 表示有多少個等差數(shù)列
          ????????????????????t = it->second;
          ????????????????????// 加入答案
          ????????????????????res += t;
          ????????????????}
          ????????????????// 從0到i-1的累加
          ????????????????f[i][j] = f[i][j] + t + 1;
          ????????????}
          ????????return?res;
          ????}
          };


          好了,今天的文章就到這里,如果覺得有所收獲,請順手點個在看或者轉(zhuǎn)發(fā)吧,你們的支持是我最大的動力 。

          上期推文:

          LeetCode1-440題匯總,希望對你有點幫助!

          LeetCode刷題實戰(zhàn)441:排列硬幣

          LeetCode刷題實戰(zhàn)442:數(shù)組中重復(fù)的數(shù)據(jù)

          LeetCode刷題實戰(zhàn)443:壓縮字符串

          LeetCode刷題實戰(zhàn)444:序列重建

          LeetCode刷題實戰(zhàn)445:兩數(shù)相加 II


          瀏覽 25
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  伊人大香蕉,一级性片 | 91视频久久久久久久久久久 | 一区二区区日韩性爱 | 豆花视频官方网站入口在线观看 | 麻豆久久艹 |