编辑
2023-11-03
算法题
00
请注意,本文编写于 554 天前,最后修改于 554 天前,其中某些信息可能已经过时。

image.png

这题思路比较简单,我开始的思路是map<int,set>,value是一个去重的set,后面就想着怎么优化。状态压缩,最后直接用一个int数组就好

cpp
class Solution { public: int countPoints(string rings) { int sticks[10] = {0}; // 数组大小为10,索引从0到9 for (int i = 0; i < rings.length(); i += 2) { char color = rings[i]; int stick = rings[i + 1] - '0'; if (color == 'R') { sticks[stick] |= (1 << 0); // 设置最低位为1,表示红色 } else if (color == 'G') { sticks[stick] |= (1 << 1); // 设置次低位为1,表示绿色 } else if (color == 'B') { sticks[stick] |= (1 << 2); // 设置再次低位为1,表示蓝色 } } int count = 0; for (int i = 0; i < 10; i++) { if (sticks[i] == 7) { // 7的二进制表示为111,表示三个颜色都存在 count++; } } return count; } };

本文作者:yowayimono

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!