(G) Binary Watch
Last updated
public static List<String> binaryWatch(int n) {
List<String> list = new ArrayList<>();
dfs(list, n, 0, 0);
return list;
}
public static void dfs(List<String> rst, int n, int num, int index){
if(n == 0){
int minutes = num & (0x0000003f);
int hours = num >> 6;
if(hours < 24 && minutes < 60) rst.add("" + hours + ":" + minutes);
return;
}
for(int i = index; i < 10; i++){
if((num & (1 << i)) == 0){
dfs(rst, n - 1, num + (1 << i), index + 1);
}
}
}
public static void main(String[] args){
List<String> list = binaryWatch(1);
for(String str : list){
System.out.println(str);
}
System.out.println(list.size() + " Answers.");
}