首页 > 解决方案 > 位操作,找到另一个最短的数组,其二进制与给定数组的二进制相同

问题描述

给定一个数组 A,其binarian(A)定义为 2^A[0] + 2^A[1] + .... 2^A[n]; 问题要求找到binarian(B)与 A 相同的花药最短数组 B。

例如,A=[1,0,2,0,0,2],因此如果B=[3,2,0],则满足要求,输出为 3。

你们能提供一些关于如何解决这个问题的想法吗?谢谢。

标签: pythonalgorithmbit

解决方案


在没有直接回答听起来像分配问题的情况下,我只想指出,任何时候你有一对 2 x你都可以用一个 2 x+1替换它......至于实际的算法,因为你没有需要关心 A 成员的顺序,您应该将它们全部放入袋子/多集结构中,然后在构建 B 时从那里开始。


推荐阅读