python - 位操作,找到另一个最短的数组,其二进制与给定数组的二进制相同
问题描述
给定一个数组 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。
你们能提供一些关于如何解决这个问题的想法吗?谢谢。
解决方案
在没有直接回答听起来像分配问题的情况下,我只想指出,任何时候你有一对 2 x你都可以用一个 2 x+1替换它......至于实际的算法,因为你没有需要关心 A 成员的顺序,您应该将它们全部放入袋子/多集结构中,然后在构建 B 时从那里开始。
推荐阅读
- python - 如何在 python dm-script 中获取当前文件路径
- android - 如何从 Retrofit、RxJava、Android 中的所有请求中发出多个请求和响应
- python - 如何在python中解决geopandas执行问题?
- html - 我们可以在 url - django 中传递两个参数吗?
- git - Git merge reverted, not merge all files in future merge
- javascript - ASP.NET Core - 如何将 Javascript 变量从视图传递到控制器
- java - 链接上的反向 ArrayList
- r - 尝试使用 dplyr 仅滞后一些变量
- python - Tkinter 调用函数时显示图片
- python - Python 'int' 对象不可下标 - 转换无法按预期工作