LeetCode 2103.环和杆

原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

C++代码

常规

cpp 复制代码
class Solution {
public:
    int countPoints(string rings) {
        int count = 0;
        set<string>se[10];
        for(int i=1,j=0;i<rings.length();i+=2,j+=2){
            se[rings[i]-'0'].insert(to_string(rings[j]));
        }

        for(int i=0;i<10;i++){
            if(se[i].size()==3) count++;  
        }
        
        return count;
    }
};

Python代码

位运算

python 复制代码
class Solution:
    def countPoints(self, rings: str) -> int:
        n,count = len(rings),0
        binary_map = [0]*17  # R - B = 17
        for i in range(0,n,2):
            binary_map[ord(rings[i]) - ord('B')] |= 1 << (int(rings[i+1]) - int('0'))  
        for i in range(10):
            tmp = 0
            for ch in ['R','G','B']:
                tmp += (binary_map[ord(ch)-ord('B')] >> i) & 1  #第i根杆 上是否有ch颜色的圈
            if tmp == 3:
                count += 1
        return count
相关推荐
不吃粑粑-13 小时前
FHQ Treap模版
数据结构·算法
2501_9011478313 小时前
学习笔记|LeetCode 739 每日温度:从暴力枚举到单调栈线性最优解
笔记·学习·leetcode
追随者永远是胜利者13 小时前
(LeetCode-Hot100)22. 括号生成
java·算法·leetcode·职场和发展·go
CHANG_THE_WORLD14 小时前
多维数组传参为什么使用列指针?—— 深度解析
数据结构·算法
追随者永远是胜利者14 小时前
(LeetCode-Hot100)32. 最长有效括号
java·算法·leetcode·职场和发展·go
lifallen14 小时前
CDQ 分治 (CDQ Divide and Conquer)
java·数据结构·算法
追随者永远是胜利者14 小时前
(LeetCode-Hot100)31. 下一个排列
java·算法·leetcode·职场和发展·go
ValhallaCoder14 小时前
hot100-二分查找
数据结构·python·算法·二分查找
0 0 014 小时前
【C++】矩阵翻转/n*n的矩阵旋转
c++·线性代数·算法·矩阵
m0_5312371715 小时前
C语言-指针,结构体
c语言·数据结构·算法