麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

LeetCode題解:Arithmetic Slices

2019-11-14 10:12:05
字體:
供稿:網(wǎng)友

A sequence of number 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, these are arithmetic sequence:

1, 3, 5, 7, 97, 7, 7, 73, -1, -5, -9

The following sequence is not arithmetic.

1, 1, 2, 5, 7

A zero-indexed array A consisting of N numbers is given. A slice of that array is any pair of integers (P, Q) such that 0 <= P < Q < N.

A slice (P, Q) of array A is called arithmetic if the sequence:A[P], A[p + 1], ..., A[Q - 1], A[Q] is arithmetic. In particular, this means that P + 1 < Q.

The function should return the number of arithmetic slices in the array A.

Example:

A = [1, 2, 3, 4]return: 3, for 3 arithmetic slices in A: [1, 2, 3], [2, 3, 4] and [1, 2, 3, 4] itself.

思路:

依次取差,用來尋找差值的位置。對(duì)每組等差數(shù)列,計(jì)算子數(shù)列個(gè)數(shù)。

題解:

int numberOfArithmeticSlices(const std::vector<int>& A) {    int lastDelta = std::numeric_limits<int>::max();    int currentLongestSliceLength(2);    int totalSlices(0);    auto numSubSlices = [](int sliceLength) {        // For a slice, e.g. 1, 2, 3, 4, 5, the possible sub slices rae        //        //  1, 2, 3; 2, 3, 4; 3, 4, 5       -- (n - 3 + 1) slices        //  1, 2, 3, 4; 2, 3, 4, 5          -- (n - 4 + 1) slices        //  1, 2, 3, 4, 5                   -- (n - n + 1) slices        //        // So the number of subslices are sum(n - 3 + 1, ... n - n + 1) total        // n - 2 items, that is,        //  sum(n + 1, n + 1, ...) - sum(3, ... n),        // or        //  (n + 1) * (n - 2) - (n + 3) * (n - 2) / 2        //        // NOTE: extract (n - 2) out is unwise        if (sliceLength <= 2) {            return 0;        }        return (sliceLength + 1) * (sliceLength - 2) - (sliceLength + 3) * (sliceLength - 2) / 2;    };    for(size_t i = 1; i < A.size(); ++i) {        int delta = A[i] - A[i - 1];        if (delta == lastDelta) {            currentLongestSliceLength++;        } else {            totalSlices += numSubSlices(currentLongestSliceLength);            currentLongestSliceLength = 2;  // two elements at first        }        lastDelta = delta;    }    if (currentLongestSliceLength > 2) {        totalSlices += numSubSlices(currentLongestSliceLength);    }    return totalSlices;}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 黄色视屏免费看 | 久草在线视频首页 | 日本一区二区视频在线观看 | 啪啪激情 | 国产资源在线免费观看 | 中文字幕在线播放视频 | 成年免费在线视频 | 国产成人精品一区在线播放 | 五月天影院,久久综合, | 一本大道av| 久久在线精品视频 | 亚洲第一色婷婷 | 国产在线精品一区二区 | 国产午夜精品久久久久久久蜜臀 | 国产日本在线播放 | 欧美一级淫片免费视频1 | 午夜视频福利 | 免费在线看黄 | 国产成人精品免高潮在线观看 | 国产精品久久久久久一区二区三区 | 亚久久| 男女做性免费网站 | 91网在线播放 | 青青国产在线视频 | 一本免费视频 | 国产精品一区久久久久 | 欧美黄色一级片视频 | 暴力肉体进入hdxxxx0 | 欧美精品一区二区三区久久久 | 成人不卡 | 97干在线| 羞羞视频在线免费 | 色人阁在线视频 | 伦理三区 | 中文在线免费观看 | 国产成人精品无人区一区 | 欧美成人黄色 | 91看片王| 最新在线黄色网址 | 国产一级免费电影 | 久久精品亚洲国产奇米99 |