Partition Array

来源:互联网 发布:java set叫什么 编辑:程序博客网 时间:2024/06/06 03:26

这道题用两根指针,向中间逼近。

一定要注意的是corner case时的下标处理。

/**      *@param nums: The integer array you should partition     *@param k: As description     *return: The index after partition     */    public int partitionArray(int[] nums, int k) {    //write your code here    if ((nums == null || nums.length == 0) || (nums.length == 1 && nums[0] > k)) {        return 0;    }    if (nums.length == 1 && nums[0] > k) {        return 1;    }    int left = 0, right = nums.length - 1;    int index = 0;    while (left < right) {        if (nums[left] < k && nums[right] >= k) {            left++;            right--;            index++;        } else if (nums[left] >= k && nums[right] >= k) {            right--;        } else if (nums[left] < k && nums[right] < k) {            left++;            index++;        } else {            int temp = nums[left];            nums[left] = nums[right];            nums[right] = temp;            left++;            right--;            index++;        }    }    if (left == nums.length - 1) {        //1 return index++;        return ++index;    } else {        //return index;        if (nums[left] < k) {            return ++index;        } else         return index;    }   //return index;    }


0 0
原创粉丝点击