美文网首页
【python美团点评】K

【python美团点评】K

作者: 阿牛02 | 来源:发表于2019-08-18 11:02 被阅读0次

    题目:序列中任意个连续的元素组成的子序列称为该序列的子串。 现在给你一个序列P和一个整数K,询问元素和是K的倍数的子串的最大长度。比如序列【1,2,3,4,5】,给定的整数K为 5,其中满足条件的子串为{5}、{2,3}、{1,2,3,4}、{1,2,3,4,5},那么答案就为 5,因为最长的子串为{1,2,3,4,5};如果满足条件的子串不存在,就输出 0。 

    输入描述:

    第一行包含一个整数N, 1 ≤ 𝑁 ≤ 105。

    第二行包含 N 个整数𝑝𝑖,𝑝𝑖表示序列P第i个元素的值。0 ≤ 𝑝𝑖 ≤ 105。第三行包含一个整数K,1 ≤ 𝐾 ≤ 105。

    输出描述:

    输出一个整数ANS,表示答案。

    code:

    def maxSub(n, nums, k):

        nums = [0] + nums

        mod = [-1] * k

        mod[0] = 0

        #print(mod)

        ans = 0

        for i in range(1, len(nums)):

            nums[i] = nums[i] + nums[i - 1]  # nums[i]为第几个子数组的和

            print(nums[i])

            m = nums[i] % k

            if mod[m] != -1:

                if ans < i - mod[m]:

                    ans = i - mod[m]

            else:

                mod[m] = i

        return ans

    if __name__ == '__main__':

        n = 5#int(input())

        nums = [1, 2, 3, 4, 5]#list(map(int, input().split()))

        k = 5#int(input())

        print(maxSub(n, nums, k))

    程序运行结果为:

    5

    相关文章

      网友评论

          本文标题:【python美团点评】K

          本文链接:https://www.haomeiwen.com/subject/rohrsctx.html