Advertisement
sweet1cris

Untitled

Jan 9th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.09 KB | None | 0 0
  1. public class Solution {
  2.     /**
  3.      * @param nums: A list of integers.
  4.      * @return: An integer denotes the middle number of the array.
  5.      */
  6.     public int median(int[] nums) {
  7.         return sub(nums, 0, nums.length - 1, (nums.length + 1)/2);
  8.     }
  9.     private int sub(int[] nums, int start, int end, int size) {
  10.         int mid = (start + end) / 2;
  11.         int pivot = nums[mid];
  12.         int i = start - 1, j = end + 1;
  13.         for (int k = start; k < j; k++) {
  14.             if (nums[k] < pivot) {
  15.                 i++;
  16.                 int tmp = nums[i];
  17.                 nums[i] = nums[k];
  18.                 nums[k] = tmp;
  19.             } else if (nums[k] > pivot) {
  20.                 j--;
  21.                 int tmp = nums[j];
  22.                 nums[j] = nums[k];
  23.                 nums[k] = tmp;
  24.                 k--;
  25.             }
  26.         }
  27.         if (i - start + 1 >= size) {
  28.             return sub(nums, start, i, size);
  29.         } else if (j - start >= size) {
  30.             return nums[j-1];
  31.         } else {
  32.             return sub(nums, j, end, size - (j - start));
  33.         }
  34.     }
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement