重新开始刷leetcode,记录刷题过程中的一些理解。
https://leetcode.cn/problems/binary-watch/description/
这里__builtin_popcount统计数字中二进制位为1的个数,例如7:07分,那么小时中包含3个1,分钟包含3个1,这是属于亮灯6个的其中一种组合。
因此我们遍历小时和分钟(12*60种组合),分别计算每种组合里亮灯个数与给定个数相同的情况,如果相等则输出该时分组合形式。
class Solution
{
public:
vector<string> readBinaryWatch(int num)
{
vector<string> result;
for(int hours = 0; hours < 12; hours++)
{
for(int minute = 0; minute < 60; minute++)
if(__builtin_popcount(hours) + __builtin_popcount(minute) == num )
result.push_back(to_string(hours)+(minute<10 ?":0":":")+to_string(minute));
}
return result;
}
};