zoukankan      html  css  js  c++  java
  • [Swift]LeetCode446. 等差数列划分 II

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/10339587.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    A sequence of numbers 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 sequences:

    1, 3, 5, 7, 9
    7, 7, 7, 7
    3, -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 subsequence slice of that array is any sequence of integers (P0, P1, ..., Pk) such that 0 ≤ P0 < P1 < ... < Pk < N.

    A subsequence slice (P0, P1, ..., Pk) of array A is called arithmetic if the sequence A[P0], A[P1], ..., A[Pk-1], A[Pk] is arithmetic. In particular, this means that k ≥ 2.

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

    The input contains N integers. Every integer is in the range of -231 and 231-1 and 0 ≤ N ≤ 1000. The output is guaranteed to be less than 231-1.

    Example:

    Input: [2, 4, 6, 8, 10]
    
    Output: 7
    
    Explanation:
    All arithmetic subsequence slices are:
    [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]

    如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。

    例如,以下数列为等差数列:

    1, 3, 5, 7, 9
    7, 7, 7, 7
    3, -1, -5, -9

    以下数列不是等差数列。

    1, 1, 2, 5, 7 

    数组 A 包含 N 个数,且索引从 0 开始。该数组子序列将划分为整数序列 (P0, P1, ..., Pk),P 与 Q 是整数且满足 0 ≤ P0 < P1 < ... < Pk < N。 

    如果序列 A[P0],A[P1],...,A[Pk-1],A[Pk] 是等差的,那么数组 A 的子序列 (P0,P1,…,PK) 称为等差序列。值得注意的是,这意味着 k ≥ 2。

    函数要返回数组 A 中所有等差子序列的个数。

    输入包含 N 个整数。每个整数都在 -231 和 231-1 之间,另外 0 ≤ N ≤ 1000。保证输出小于 231-1。 

    示例: 

    输入:[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]

    1128ms
     1 class Solution {
     2     func numberOfArithmeticSlices(_ A: [Int]) -> Int {
     3         var res:Int = 0
     4         var n:Int = A.count
     5         var dp:[[Int:Int]] = [[Int:Int]](repeating:[Int:Int](),count:n)
     6         for i in 0..<n
     7         {
     8             for j in 0..<i
     9             {
    10                 var delta:Int64 = Int64(A[i]) - Int64(A[j])
    11                 if delta > Int64(Int.max) || delta < Int64(Int.min) {continue}
    12                 var diff:Int = Int(delta)
    13                 
    14                 if dp[i][diff] == nil
    15                 {
    16                     dp[i][diff] = 1
    17                 }
    18                 else
    19                 {
    20                     dp[i][diff]! += 1                    
    21                 }
    22                 
    23                 if dp[j][diff] != nil
    24                 {
    25                     res += dp[j][diff]!
    26                     dp[i][diff]! += dp[j][diff]!
    27                 }
    28             }
    29         }
    30         return res
    31     }
    32 }


  • 相关阅读:
    关于在unity中动态获取字符串后在InputField上进行判断的BUG
    关于在将暴风SDK倒入unity中运行程序出现报错问题
    关于用暴风SDK在unity中加入VR效果和利用暴风手柄进行操作
    IDEA 接口无法跳转到实现类
    springboot项目中获取pom中的属性
    mybatisplus异常: 栏位索引超过许可范围:2,栏位数:1。
    七日杀windows服务器搭建
    SQL子查询报错syntax error at end of input
    关于在将excel数据导入到pgsql数据库的时候中文变成问号的处理方式
    字符串补位操作
  • 原文地址:https://www.cnblogs.com/strengthen/p/10339587.html
Copyright © 2011-2022 走看看