zhishengzhou1984
BAN USERHere is the java implementation, hope it helps.
public static Node get5thFromTail(Node head){
Queue<Node> queue = new LinkedList<Node>();
while(head != null){
if(queue.size() == 5){
queue.poll();
queue.offer(head);
} else {
queue.offer(head);
}
head = head.next;
}
//There are less than 5 node
if(queue.size() < 5){
return null;
}
return queue.poll();
}
if (flowerbed == null || flowerbed.size() == 0 || flowerbed.size() < numberToPlace)
return false;
int size = flowerbed.size();
if (numberToPlace == 0) {
return true;
}
flowerbed.add(0, true);
flowerbed.add(size - 1, true);
int pre = 0;
int can = 0;
for(int i = 1; i < flowerbed.size(); i++){
if(flowerbed.get(i) == true){
can += i - pre - 2;
pre = i;
}
}
return can >= numberToPlace;
}
public boolean canPlaceFlowers(List<Boolean> flowerbed, int numberToPlace) {
if (flowerbed == null || flowerbed.size() == 0 || flowerbed.size() < numberToPlace)
return false;
int size = flowerbed.size();
if (numberToPlace == 0) {
return true;
}
flowerbed.add(0, true);
flowerbed.add(size - 1, true);
int pre = 0;
int can = 0;
for(int i = 1; i < flowerbed.size(); i++){
if(flowerbed.get(i) == true){
can += i - pre - 2;
pre = i;
}
}
return can >= numberToPlace;
}
This is a java Solution.
I think it is pretty straightforward. Enjoy
public boolean canPlaceFlowers(List<Boolean> flowerbed, int numberToPlace) {
if (flowerbed == null || flowerbed.size() == 0 || flowerbed.size() < numberToPlace)
return false;
int size = flowerbed.size();
if (numberToPlace == 0) {
return true;
}
flowerbed.add(0, true);
flowerbed.add(size - 1, true);
int pre = 0;
int can = 0;
for(int i = 1; i < flowerbed.size(); i++){
if(flowerbed.get(i) == true){
can += i - pre - 2;
pre = i;
}
}
return can >= numberToPlace;
}
It works. Thanks!
- zhishengzhou1984 June 30, 2015