【问题标题】:Python: display subarray divisible by k , how do I solve with hashtable?Python:显示可被 k 整除的子数组,如何用哈希表解决?
【发布时间】:2016-10-12 06:06:20
【问题描述】:

我正在寻找Python解决方案

例如,对于 A=[2, -3, 5, 4, 3, -1, 7]。对于 k = 3,有一个子数组,例如 {-3, 5, 4}。因为,k=5 有子数组 {-3, 5, 4, 3, -1, 7} 等。

【问题讨论】:

    标签: python hashtable


    【解决方案1】:

    这就是解决方案。你可以试着自己弄清楚。

    def solve(a, k):
        tbl = {0 : -1}
        sum = 0
        n = len(a)
    
        for i in xrange(n):
            sum = (sum + a[i]) % k
            if sum in tbl:
                   key = tbl[sum]
                   result = a[key+1: i+1]
                   return result
            tbl[sum] = i
        return []
    

    【讨论】:

    • 谢谢,所以这对我来说最有意义 def solve(a, k): tbl = {0 : -1} sum = 0 n = len(a) for i in range(n): sum = (sum + a[i]) % k if sum in tbl: key = tbl[sum] result = [key+1][i+1] return result tbl[sum] = i return []
    • 所以我在这里改了一行 -> result = a[key+1][i+1] 但是在运行它时仍然给我错误提示: Typeerror: 'int' object has no attribute ' __getitem' 你能帮忙解决一下@Banach 吗?谢谢。
    • a[key+1] 会给你一个整数。你不能索引整数
    • 对不起,这里的混乱,但是当我运行您提供的代码而不做任何更改时,我得到这个错误:列表索引必须是整数,而不是元组
    • 啊,知道了,没想到。感谢您在这里对我的耐心。
    猜你喜欢
    • 2013-05-12
    • 1970-01-01
    • 2012-07-31
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多