美文网首页
lintcode 数组划分

lintcode 数组划分

作者: yzawyx0220 | 来源:发表于2016-12-18 20:09 被阅读52次

给出一个整数数组 nums 和一个整数 k。划分数组(即移动数组 nums 中的元素),使得:
所有小于k的元素移到左边
所有大于等于k的元素移到右边
返回数组划分的位置,即数组中第一个位置 i,满足 nums[i] 大于等于 k。
样例
给出数组 nums = [3,2,2,1] 和 k = 2,返回 1.
先排序,然后使用二分查找:

class Solution {
public:
    int partitionArray(vector<int> &nums, int k) {
        // write your code here
        sort(nums.begin(),nums.end());
        int left = 0,right = nums.size();
        while (left < right) {
            int mid = (left + right) / 2;
            if (nums[mid] >= k) right = mid;
            else left = mid + 1;
        }
        return right;
    }
};

好吧这是二逼的方法,强行改变题目意图,其实这道题是快速排序的一步。。。。。。。

class Solution {
public:
    int partitionArray(vector<int> &nums, int k) {
        // write your code here
        int num = 0;  
        for(int i = 0;i < nums.size();i++)  
        {  
            if(nums[i] < k)  
            {  
                swap(nums[i],nums[num]);  
                num++;  
            }  
        }  
        return num;
    }
};

相关文章

  • lintcode 数组划分

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

  • LintCode 31. 数组划分

    原题 解 第一步,万年不变的查错。如果给的array是null或空,直接return 0 这道题很简单,简直对不起...

  • OJ lintcode 链表划分

    给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对...

  • 数组划分

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

  • 数组划分

    描述 样例 代码实现

  • 数组利用前缀和求子数组问题

    1、子数组之和https://www.lintcode.com/problem/subarray-sum/desc...

  • LintCode连续数组

    这个题目的名字翻译的不好,题意是: 给一个二进制数组,找到 0 和 1 数量相等的子数组的最大长度样例样例 1:输...

  • 最大子数组

    最大子数组(lintcode 41) 描述:给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。样例:给出...

  • lintcode 最大子数组||

    给定一个整数数组,找出两个 不重叠 子数组使得它们的和最大。每个子数组的数字在数组中的位置应该是连续的。返回最大的...

  • lintcode 最大子数组|||

    给定一个整数数组和一个整数 k,找出 k 个不重叠子数组使得它们的和最大。每个子数组的数字在数组中的位置应该是连续...

网友评论

      本文标题:lintcode 数组划分

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