|
22 | 22 | */
|
23 | 23 | public class _315 {
|
24 | 24 |
|
25 |
| - class Node { |
26 |
| - int val; |
27 |
| - int sum; |
28 |
| - int dup = 1; |
29 |
| - Node left; |
30 |
| - Node right; |
| 25 | + public static class Solution1 { |
| 26 | + class Node { |
| 27 | + int val; |
| 28 | + int sum; |
| 29 | + int dup = 1; |
| 30 | + Node left; |
| 31 | + Node right; |
31 | 32 |
|
32 |
| - public Node(int v, int s) { |
33 |
| - this.val = v; |
34 |
| - this.sum = s; |
| 33 | + public Node(int v, int s) { |
| 34 | + this.val = v; |
| 35 | + this.sum = s; |
| 36 | + } |
35 | 37 | }
|
36 |
| - } |
37 | 38 |
|
38 |
| - public List<Integer> countSmaller(int[] nums) { |
39 |
| - Integer[] ans = new Integer[nums.length]; |
40 |
| - Node root = null; |
41 |
| - for (int i = nums.length - 1; i >= 0; i--) { |
42 |
| - root = insertNode(nums[i], root, i, 0, ans); |
| 39 | + public List<Integer> countSmaller(int[] nums) { |
| 40 | + Integer[] ans = new Integer[nums.length]; |
| 41 | + Node root = null; |
| 42 | + for (int i = nums.length - 1; i >= 0; i--) { |
| 43 | + root = insertNode(nums[i], root, i, 0, ans); |
| 44 | + } |
| 45 | + return Arrays.asList(ans); |
43 | 46 | }
|
44 |
| - return Arrays.asList(ans); |
45 |
| - } |
46 | 47 |
|
47 |
| - Node insertNode(int val, Node node, int i, int prevSum, Integer[] ans) { |
48 |
| - if (node == null) { |
49 |
| - node = new Node(val, 0); |
50 |
| - ans[i] = prevSum; |
51 |
| - } else if (val == node.val) { |
52 |
| - node.dup += 1; |
53 |
| - ans[i] = prevSum + node.sum; |
54 |
| - } else if (val > node.val) { |
55 |
| - node.right = insertNode(val, node.right, i, prevSum + node.sum + node.dup, ans); |
56 |
| - } else { |
57 |
| - node.sum += 1; |
58 |
| - node.left = insertNode(val, node.left, i, prevSum, ans); |
59 |
| - } |
| 48 | + Node insertNode(int val, Node node, int i, int prevSum, Integer[] ans) { |
| 49 | + if (node == null) { |
| 50 | + node = new Node(val, 0); |
| 51 | + ans[i] = prevSum; |
| 52 | + } else if (val == node.val) { |
| 53 | + node.dup += 1; |
| 54 | + ans[i] = prevSum + node.sum; |
| 55 | + } else if (val > node.val) { |
| 56 | + node.right = insertNode(val, node.right, i, prevSum + node.sum + node.dup, ans); |
| 57 | + } else { |
| 58 | + node.sum += 1; |
| 59 | + node.left = insertNode(val, node.left, i, prevSum, ans); |
| 60 | + } |
60 | 61 |
|
61 |
| - return node; |
| 62 | + return node; |
| 63 | + } |
62 | 64 | }
|
63 |
| - |
64 | 65 | }
|
0 commit comments