LintCode 31. 数组划分

原创 2018年04月15日 13:14:30

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

  • 所有小于k的元素移到左边
  • 所有大于等于k的元素移到右边

返回数组划分的位置,即数组中第一个位置 i,满足 nums[i] 大于等于 k

public class Solution {
    /**
     * @param nums: The integer array you should partition
     * @param k: An integer
     * @return: The index after partition
     */
    public int partitionArray(int[] nums, int k) {
        // write your code here
        if (nums == null) {
            return -1;
        }

        int start = 0;
        int end = nums.length;
        int[] tmp = new int[nums.length+1];
        tmp[0] = k;
        for (int i = 0; i < nums.length; i++) {
            tmp[i+1] = nums[i];
        }
        while (start < end) {
            while (start < end && tmp[end] >= k) {
                end--;
            }
            if (start < end) {
                tmp[start++] = tmp[end];
            }
            while (start < end && tmp[start] < k) {
                start++;
            }
            if (start < end) {
                tmp[end--] = tmp[start];
            }
        }
        return start;
    }
}

LintCode 31 数组划分

题目:partitionArray要求:给出一个整数数组 nums 和一个整数 k。划分数组(即移动数组 nums 中的元素),使得:所有小于k的元素移到左边 所有大于等于k的元素移到右边 返回数...
  • linglian0522
  • linglian0522
  • 2017-04-16 18:37:04
  • 366

LintCode 数组划分

问题描述: 给出一个整数数nums和一个整数k。划分数组(即移动数组nums中的元素),使得: 所有小于k的元素移到左边 所有大于等于k的元素移到右边 返回...
  • gzy13269561397
  • gzy13269561397
  • 2016-03-04 16:48:07
  • 655

Lintcode31 Partition Array solution题解

【题目描述】 Given an array nums of integers and an int k, partition the array (i.e move the elements...
  • xuxu_ban
  • xuxu_ban
  • 2017-04-23 21:22:05
  • 149

LintCode-数组划分

给出一个整数数组nums和一个整数k。划分数组(即移动数组nums中的元素),使得: 所有小于k的元素移到左边 所有大于等于k的元素移到右边 返回数组划分的位置,即数组中第一...
  • wangyuquanliuli
  • wangyuquanliuli
  • 2015-08-19 11:23:36
  • 2202

划分数组问题

今天做了一道题目,是划分数组的问题: 给出一个整数数组 nums 和一个整数 k。划分数组(即移动数组 nums 中的元素),使得: 所有小于k的元素移到左边所有大于等于k的元素移到右边 返回...
  • Nicholas_Liu2017
  • Nicholas_Liu2017
  • 2017-05-13 11:22:19
  • 280

LintCode:逆序对

在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。给你一个数组,求出这个数组中逆序对的总数。 概括:如果a[i] > a[j] 且 i 您在真实的面试中是否遇到过这个...
  • zyf19930610
  • zyf19930610
  • 2016-12-08 23:23:58
  • 445

LintCode-----17.带重复元素的子集

参考资料 加上去重复的条件就是了没注意一定要先sort一下 public class Solution { /* * @param nums: A set of numbers....
  • yinchaoji_
  • yinchaoji_
  • 2017-08-29 15:00:54
  • 189

Lintcode 数组划分

给出一个整数数组 nums 和一个整数 k。划分数组(即移动数组 nums 中的元素),使得: 所有小于k的元素移到左边所有大于等于k的元素移到右边 返回数组划分的位置,即数组中第一个位置 i...
  • Hk_john
  • Hk_john
  • 2017-03-16 21:35:37
  • 191

(lintcode)第31题,数组划分

给出一个整数数组 nums 和一个整数 k。划分数组(即移动数组 nums 中的元素),使得: 所有小于k的元素移到左边所有大于等于k的元素移到右边 返回数组划分的位置,即数组中第一个...
  • Aphysia
  • Aphysia
  • 2017-12-19 21:55:30
  • 108

LINTCODE——逆序对

LINTCODE——逆序对思路:本来直接统计的,结果TIMEOUT,后来改用归并排序统计,通过了,就一个注意的,数组num分成L,mid,R三段时,如果L...
  • kaaokou
  • kaaokou
  • 2017-09-19 16:25:28
  • 235
收藏助手
不良信息举报
您举报文章:LintCode 31. 数组划分
举报原因:
原因补充:

(最多只允许输入30个字)