0
点赞
收藏
分享

微信扫一扫

等差数列划分 II - 子序列

快乐小码农 2021-09-21 阅读 45
今日算法
题目描述:
示例 1:
示例 2:
题目分析:
  • 子序列是非连续的
  • 子序列也是等差序列
思路:
代码实现:
class Solution {
    public int numberOfArithmeticSlices(int[] nums) {
        int len = nums.length;
        int result = 0;
        int[][] dp = new int[len][len];
        for (int i = len - 2; i > 0; i--) {
            for (int j = i - 1; j >= 0; j--) {
                long diff = (long) nums[i] - nums[j];
                int num = 0;
                for (int idx = i + 1; idx < len; idx++) {
                    if ((long) nums[idx] - nums[i] == diff) {
                        num += dp[i][idx] + 1;
                    }
                }
                result += num;
                dp[j][i] = num;
            }
        }
        return result;
     }
}
举报

相关推荐

0 条评论