首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >平衡数组子间隔中元素数的算法?

平衡数组子间隔中元素数的算法?
EN

Stack Overflow用户
提问于 2014-04-06 23:05:10
回答 1查看 301关注 0票数 3

假设您有一个包含4种不同类型元素的数组。

代码语言:javascript
复制
1 1 2 3 1 2 2 3 3 4 4 1.

我想找出每个元素数量相等和元素总数最大的最长子间隔。

在这种情况下,

1 1 2 3 1 2 2 3

因为这导致了3个二垒,3个三分和3个1。

我相信这是某种修改的动态规划,或者需要前缀和的东西,但我不太确定。谁能给我个开场白吗?

EN

回答 1

Stack Overflow用户

发布于 2014-04-07 01:33:32

代码语言:javascript
复制
#!/usr/bin/env python

#The demo data
SET = [1,1,2,3,1,2,2,3,3,4,4,1]

#Function to map the counts of the values in the set
def map(x):
        ret = {}
        for v in x:
                if v not in ret.keys():
                        ret.update({v:0})
                ret[v] += 1
        return ret

#Function to check if all counts in the map are the same
def checkMap(x):
        val = None
        for k,v in x.items():
                if val != None and v != val:
                        return False
                else:
                        val=v
        return True

#Determine the initial counts
counts = map(SET)

#Now step back from end index to start
for ix in range(len(SET) - 1, 0, -1):
        val = SET[ix]
        counts[val] += -1
        if counts[val] == 0:
                del counts[val]
        if checkMap(counts):
                print "Condition Reached, Largest Subset is:",SET[0:ix]
                break
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22901113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档