<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)413:等差數(shù)列劃分

          共 1919字,需瀏覽 4分鐘

           ·

          2021-10-21 07:19

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

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

          An integer array is called arithmetic if it consists of at least three elements and if the difference between any two consecutive elements is the same.

          For example, [1,3,5,7,9], [7,7,7,7], and [3,-1,-5,-9] are arithmetic sequences.

          Given an integer array nums, return the number of arithmetic subarrays of nums.

          A subarray is a contiguous subsequence of the array.


          如果一個數(shù)列 至少有三個元素 ,并且任意兩個相鄰元素之差相同,則稱該數(shù)列為等差數(shù)列。
          例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差數(shù)列。
          給你一個整數(shù)數(shù)組 nums ,返回數(shù)組 nums 中所有為等差數(shù)組的 子數(shù)組 個數(shù)。
          子數(shù)組 是數(shù)組中的一個連續(xù)序列。

          示例

          示例 1:
          輸入:nums = [1,2,3,4]
          輸出:3
          解釋:nums 中有三個子等差數(shù)組:[1, 2, 3]、[2, 3, 4] 和 [1,2,3,4] 自身。

          示例 2:
          輸入:nums = [1]
          輸出:0


          解題

          解題思路:
          數(shù)學題。此題并不難,只不過需要知道以下兩個要點:
          • 長度為n的等差數(shù)列中,自身以及它的子集,個數(shù)一共有(n-1)*(n-2)/2。

          • dx為等差數(shù)列中兩個相鄰元素的差的絕對值。數(shù)組中兩個dx不想等的等差數(shù)列最多可能有一個重復使用的點。例如1,2,3,6,9。3即使那個重復的值,分別是1,2,3的尾,以及3,6,9的頭。


          如此一來只需統(tǒng)計數(shù)組中,連續(xù)的等差數(shù)列的長度即可,這樣的等差數(shù)列盡可能取到最長。于是掃描一遍數(shù)組即可獲得最終結果。


          class?Solution?{
          public:
          ????#define?numberOfNsize(x) (((x-1)*(x-2))>>1)
          ????int?numberOfArithmeticSlices(vector<int>& A)?{
          ????????//存儲A中出現(xiàn)過的連續(xù)的等差數(shù)列的最長長度
          ????????int?size = A.size();
          ????????int?pos = 0;
          ????????int?res = 0;
          ????????while?(pos < size-2) {
          ???????????//試圖從pos往后查詢一個等差數(shù)列
          ????????????int?dx = A[pos + 1] - A[pos];
          ????????????int?next = pos + 1;
          ????????????while?((next-1] == dx)) {
          ????????????????next++;
          ????????????}
          ????????????int?length = next - pos;
          ????????????pos = next-1;
          ????????????if?(length >= 3) res += numberOfNsize(length);
          ????????}
          ????????return?res;
          ????}
          };


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

          上期推文:

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

          LeetCode刷題實戰(zhàn)401:二進制手表

          LeetCode刷題實戰(zhàn)402:移掉 K 位數(shù)字

          LeetCode刷題實戰(zhàn)403:青蛙過河

          LeetCode刷題實戰(zhàn)404:左葉子之和

          LeetCode刷題實戰(zhàn)405:數(shù)字轉換為十六進制數(shù)

          LeetCode刷題實戰(zhàn)406:根據(jù)身高重建隊列

          LeetCode刷題實戰(zhàn)407:接雨水 II

          LeetCode刷題實戰(zhàn)408:有效單詞縮寫

          LeetCode刷題實戰(zhàn)409:最長回文串

          LeetCode刷題實戰(zhàn)410:分割數(shù)組的最大值

          LeetCode刷題實戰(zhàn)411:最短獨占單詞縮寫

          LeetCode刷題實戰(zhàn)412:Fizz Buzz


          瀏覽 5
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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人妻人人操人人爽 | 国产精品久久久久久久久动漫 | 亚洲高清视频免费观看 | 欧美午夜精品一区二区三区 |