๐ŸŒ•๐ŸŒ— 413. ็ญ‰ๅทฎๆ•ฐๅˆ—ๅˆ’ๅˆ†

ๅžไฝ›็ซฅๅญ2022ๅนด10ๆœˆ10ๆ—ฅ
  • algorithm
  • dp
ๅฐไบŽ 1 ๅˆ†้’Ÿ

๐ŸŒ•๐ŸŒ— 413. ็ญ‰ๅทฎๆ•ฐๅˆ—ๅˆ’ๅˆ†

้šพๅบฆ: ๐ŸŒ•๐ŸŒ—

้—ฎ้ข˜ๆ่ฟฐ

img_6.png


่งฃๆณ•

class Solution {
    public int numberOfArithmeticSlices(int[] nums) {
        // ๆ€่ทฏ๏ผš
        // dp[i] - ไปฅ i ไธบ็ป“ๅฐพไธ‹ๆ ‡็š„็ญ‰ๅทฎๆ•ฐๅˆ—็š„็ง็ฑปๆ•ฐ
        // ๆณจๆ„้ข˜ๆ„็š„ๅญๆ•ฐ็ป„ๆ˜ฏๆŒ‡๏ผŒๆ•ฐ็ป„ไธญ็š„่ฟž็ปญๅบๅˆ—
        int len = nums.length;
        if(len < 3) {
            return 0;
        }
        // len >= 3
        int res = 0;
        int[] dp = new int[len];
        for(int i = 2; i < len; i ++) {
            // ๅˆคๆ–ญ [i] ่ƒฝๅฆไธŽ [i - 1] & [i - 2] ๅฝขๆˆ็ญ‰ๅทฎๆ•ฐๅˆ—
            if(nums[i] - nums[i - 1] == nums[i - 1] - nums[i - 2]) {
                // ๆปก่ถณ่ฟž็ปญ็š„ๅญๅบๅˆ—
                // {[i - 2], [i - 1], [i]} ๅฏไปฅๅ•็‹ฌ็ป„ๆˆไธ€ไธช็ญ‰ๅทฎๅบๅˆ—
                dp[i] = 1;
                // [i] ๅฏไปฅไธŽ dp[i - 1] ๆž„ๆˆ่ฟž็ปญ็š„็ญ‰ๅทฎๅบๅˆ—
                dp[i] += dp[i - 1];
                res += dp[i];
            } 
        }
        return res;
    }
}

่พ“ๅ‡บ

img_5.png

ไธŠๆฌก็ผ–่พ‘ไบŽ: 2022/10/10 ไธ‹ๅˆ8:43:48
่ดก็Œฎ่€…: liuxianzhishou