Created
December 1, 2016 02:30
-
-
Save nareshdb/a0e54608afc4d456f422b6bc6da1cb6c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.*; | |
class Foo3{ | |
public static void main(String args[]){ | |
int[] l = {4,3,2,1}; | |
answer(l); | |
} | |
public static int answer(int[] l){ | |
class GenQueue<E> { | |
private LinkedList<E> list = new LinkedList<E>(); | |
public void enqueue(E item) { | |
list.addLast(item); | |
} | |
public E dequeue() { | |
return list.poll(); | |
} | |
public boolean hasItems() { | |
return !list.isEmpty(); | |
} | |
public int size() { | |
return list.size(); | |
} | |
public void addItems(GenQueue<? extends E> q) { | |
while (q.hasItems()) | |
list.addLast(q.dequeue()); | |
} | |
} | |
Integer[] ll = new Integer[l.length]; | |
for(int i=0;i<l.length;i++){ | |
ll[i] = l[i]; | |
} | |
Arrays.sort(ll); | |
GenQueue<Integer> queue0 = new GenQueue<Integer>(); | |
GenQueue<Integer> queue1 = new GenQueue<Integer>(); | |
GenQueue<Integer> queue2 = new GenQueue<Integer>(); | |
int sum = 0; | |
for( int i=0 ; i<ll.length ; i++){ | |
sum = sum + ll[i]; | |
if(ll[i] % 3 == 0){ | |
queue0.enqueue(ll[i]); | |
} | |
else{ | |
if(ll[i] % 3 == 1){ | |
queue1.enqueue(ll[i]); | |
}else{ | |
queue2.enqueue(ll[i]); | |
} | |
} | |
} | |
if ( (sum % 3) == 1 ) | |
{ | |
// either remove one item from queue1 | |
if ( queue1.hasItems() ) | |
queue1.dequeue(); | |
// or remove two items from queue2 | |
else | |
{ | |
if ( queue2.hasItems() ) | |
queue2.dequeue(); | |
else | |
return 0; | |
if ( queue2.hasItems() ) | |
queue2.dequeue(); | |
else | |
return 0; | |
} | |
} | |
else | |
if ((sum % 3) == 2) | |
{ | |
// either remove one item from queue2 | |
if ( queue2.hasItems() ) | |
queue2.dequeue(); | |
// or remove two items from queue1 | |
else | |
{ | |
if ( queue1.hasItems() ) | |
queue1.dequeue(); | |
else | |
return 0; | |
if ( queue1.hasItems() ) | |
queue1.dequeue(); | |
else | |
return 0; | |
} | |
} | |
int n = queue2.size() + queue1.size() + queue0.size() ; | |
int[] ans = new int[n]; | |
int i=0; | |
while(queue0.hasItems()){ | |
ans[i] = queue0.dequeue(); | |
++i; | |
} | |
while(queue1.hasItems()){ | |
ans[i] = queue1.dequeue(); | |
++i; | |
} | |
while(queue2.hasItems()){ | |
ans[i] = queue2.dequeue(); | |
++i; | |
} | |
Arrays.sort(ans); | |
int ret = 0; | |
for(int j=i-1 ; j>=0 ; j--){ | |
ret = ret * 10; | |
ret += ans[j]; | |
} | |
System.out.println(ret); | |
return ret; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment