在Python中查找合并后剩余最小数量的颜色的程序
假设我们有一组颜色(R,G,B)。现在,如果相邻有两种不同的颜色,则可以转换为第三种颜色的单个颜色项。我们必须找到任何可能的这种转换序列后剩余的最小数量。
因此,如果输入为colors = [“G”,”R”,”G”,”B”,”R”],则输出将为1,因为它可以转换为-如下所示
为了解决这个问题,我们将遵循以下步骤 –
- n:颜色的大小
- 如果颜色只有一种不同的颜色,那么
- 返回n
- 如果n≤1,则
- 返回n
- x:= 0
- d:=具有键值对{(“R”,1),(“G”,2),(“B”,3)}的映射
- 对于颜色中的每个c,执行以下操作
- x:= x XOR d[c]
- 如果x与0相同,则返回2,否则返回1
示例(Python)
让我们看一下以下实现,以获得更好的理解 –
class Solution:
def solve(self, colors):
n = len(colors)
if len(set(colors)) == 1:
return n
if n <= 1:
return n
x = 0
d = {"R": 1, "G": 2, "B": 3}
for qux in colors:
x ^= d[qux]
return 2 if x == 0 else 1
ob = Solution()
colors = ["G", "R", "G", "B", "R"]
print(ob.solve(colors))
输入
["G", "R", "G", "B", "R"]
输出
1