package com.patience.interview.algorithms;
import scala.Int;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class SolveQ5 {
static List<Integer> al = Arrays.asList(1,1,1,2,2,2,5,5,5,6,6,6,8);
public static void main(String[] args) {
int n = 9;
int num = 0;
for (int i = 1; i <= n; i++) {
ArrayList<Integer> temp = new ArrayList();
for (int j = 0; j < al.size(); j++) {
temp.add(al.get(j));
}
temp.add(i);
temp.sort(Integer::compareTo);
if(hu(temp,false)){
num++;
System.err.print(i + "\t");
}
}
if(num == 0)
System.err.println(0);
}
public static boolean hu(List<Integer> list,boolean hasHead){
if(list.size() == 0)
return true;
if(!hasHead){
ArrayList<Integer> temp = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
temp.add(list.get(i));
}
if(temp.get(0) == temp.get(1)){
temp.remove(1);
temp.remove(0);
if(hu(temp,true)){
return true;
}
}
}
if(list.size() >= 3){
ArrayList<Integer> temp = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
temp.add(list.get(i));
}
int n1 = temp.get(0);
int n2 = n1 + 1;
int n3 = n1 + 2;
int index2 = list.indexOf(n2);
int index3 = list.indexOf(n3);
if(index2 > 0 && index3 > 0){
temp.remove(index3);
temp.remove(index2);
temp.remove(0);
if(hu(temp,hasHead)){
return true;
}
}
}
if(list.size() >= 3){
ArrayList<Integer> temp = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
temp.add(list.get(i));
}
boolean $1 = temp.get(0).equals(temp.get(1));
boolean $2 = temp.get(1).equals(temp.get(2));
if($1 && $2){
temp.remove(2);
temp.remove(1);
temp.remove(0);
if(hu(temp,hasHead)){
return true;
}
}
}
return false;
}
}
|