|
1 | 1 | package com.inuker.test; |
2 | 2 |
|
| 3 | +import com.leetcode.library.TreeNode; |
| 4 | + |
3 | 5 | import java.util.ArrayList; |
4 | 6 | import java.util.Arrays; |
5 | 7 | import java.util.Collections; |
|
20 | 22 |
|
21 | 23 | public class Test2 { |
22 | 24 |
|
23 | | - public int[] searchRange(int[] nums, int target) { |
24 | | - if (nums.length == 0) { |
25 | | - return new int[]{-1, -1}; |
26 | | - } |
27 | | - return new int[] { |
28 | | - lowerBound(nums, target), |
29 | | - upperBound(nums, target) |
30 | | - }; |
31 | | - } |
32 | | - |
33 | | - public static int lowerBound(int[] nums, int target) { |
34 | | - int left = 0, right = nums.length - 1; |
35 | | - |
36 | | - while (left < right) { |
37 | | - int mid = left + ((right - left) >> 1); |
38 | | - |
39 | | - if (target > nums[mid]) { |
40 | | - left = mid + 1; |
| 25 | + public void moveZeroes(int[] nums) { |
| 26 | + for (int i = 0, j = nums.length - 1; j > i; ) { |
| 27 | + if (nums[i] != 0) { |
| 28 | + i++; |
| 29 | + } else if (nums[j] != 0) { |
| 30 | + swap(nums, i, j--); |
41 | 31 | } else { |
42 | | - right = mid; |
| 32 | + j--; |
43 | 33 | } |
44 | 34 | } |
45 | | - |
46 | | - return nums[left] == target ? left : -1; |
47 | 35 | } |
48 | 36 |
|
49 | | - public static int upperBound(int[] nums, int target) { |
50 | | - int left = 0, right = nums.length - 1; |
51 | | - |
52 | | - while (left < right) { |
53 | | - int mid = left + ((right - left) >> 1) + 1; |
54 | | - |
55 | | - if (target < nums[mid]) { |
56 | | - right = mid - 1; |
57 | | - } else { |
58 | | - left = mid; |
59 | | - } |
60 | | - } |
61 | | - |
62 | | - return nums[right] == target ? right : -1; |
| 37 | + private void swap(int[] nums, int i, int j) { |
| 38 | + int t = nums[i]; |
| 39 | + nums[i] = nums[j]; |
| 40 | + nums[j] = t; |
63 | 41 | } |
| 42 | + |
64 | 43 | } |
0 commit comments