数组划分

作者: lyoungzzz | 来源:发表于2017-07-16 21:56 被阅读11次

描述

给出一个整数数组 nums 和一个整数 k。划分数组(即移动数组 nums 中的元素),使得:
所有小于 k 的元素移到左边
所有大于等于 k 的元素移到右边
返回数组划分的位置,即数组中第一个位置 i,满足 nums[i] 大于等于 k。

样例

给出数组 nums = [3,2,2,1] 和 k = 2,返回 1.

代码实现

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

相关文章

  • 数组划分

    给出一个整数数组 nums 和一个整数 k。划分数组(即移动数组 nums 中的元素),使得: 所有小于k的元素移...

  • 数组划分

    描述 样例 代码实现

  • lintcode 数组划分

    给出一个整数数组 nums 和一个整数 k。划分数组(即移动数组 nums 中的元素),使得:所有小于k的元素移到...

  • 2018-08-22

    数组内存空间的划分、栈内存

  • JAVA 一维数组

    数组 JVM内存划分 A:内存划分 JVM对自己的内存划分为5个区域 * a: 寄存器:内存和CUP之间 * b:...

  • 数组切割

    将一个大的数组按照长度来划分成不同的小数组

  • 根据给定的值划分数组

    算法描述 给定一个数组和一个数k,划分数组,似的左边的值都小于k,右边的数大于等于k,返回划分数组的位置,例:[3...

  • 归并排序

    思路:基本思想是分治策略,先进行划分,再进行合并; 先将待排序数组C划分为两个数组A和B,从中间分开; 再分别对数...

  • LeetCode #1296 Divide Array in S

    1296 Divide Array in Sets of K Consecutive Numbers 划分数组为连...

  • leetCode进阶算法题+解析(八十七)

    分割数组 题目:给定一个数组 A,将其划分为两个连续子数组 left 和 right, 使得: left 中的每个...

网友评论

    本文标题:数组划分

    本文链接:https://www.haomeiwen.com/subject/bowucxtx.html