老哥你第一题的解法是O(N^2)的吧,面试官没要求O(N)吗? 应该用快排的partition来解决吧。 public static void swap(int[] arr, int i, int j) { if (i == j) return; arr[i] = arr[i] ^ arr[j]; arr[j] = arr[i] ^ arr[j]; arr[i] = arr[i] ^ arr[j]; } public static void partition(int[] arr) { int less = -1; int more = arr.length; int l = 0; while (l < more) { if (arr[l] == 1) { swap(arr, ++less, l++); } else if (arr[l] == 0) { swap(arr, --more, l); } else { l++; } } }
1 2

相关推荐

牛客网
牛客企业服务