Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package BinaryTree;
- import java.util.ArrayDeque;
- public final class BalancedNumbers {
- private ArrayDeque<Integer> nums = new ArrayDeque<Integer>();
- private ArrayDeque<Range> todo = new ArrayDeque<Range>();
- public BalancedNumbers(int a, int b) {
- todo.addLast(new Range(a, b));
- while(!todo.isEmpty()) {
- calculate();
- }
- }
- public Integer[] getNums() {
- Integer[] arr = new Integer[nums.size()];
- return nums.toArray(arr);
- }
- public void calculate() {
- Range range = todo.removeFirst();
- if(range.a == range.b) return;
- double middle = range.a + ((range.b - range.a) * .5);
- if(Math.floor(middle) == 0) {
- todo.clear();
- return;
- }
- nums.addLast(((int)Math.floor(middle)));
- Range range1 = new Range(range.a, (int)Math.floor(middle));
- Range range2 = new Range((int)Math.ceil(middle), range.b);
- todo.addLast(range1);
- todo.addLast(range2);
- }
- }
- class Range {
- public int a;
- public int b;
- public Range(int a, int b) {
- this.a = a;
- this.b = b;
- }
- @Override
- public String toString() {
- return "a: " + a + ", b:" + b + " ";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment