zoukankan      html  css  js  c++  java
  • lintcode-31-数组划分

    数组划分

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

    注意事项

    你应该真正的划分数组 nums,而不仅仅只是计算比 k 小的整数数,如果数组 nums 中的所有元素都比 k 小,则返回 nums.length。

    样例

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

    挑战

    使用 O(n) 的时间复杂度在数组上进行划分。

    标签

    排序 两根指针 数组

    简单的思路

    先找到划分点,再将小于k的数字放在划分点左边,其他的放在右边,需要空间复杂度O(n)

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

    基于快速排序的思想

    class Solution {
    public:
        int partitionArray(vector<int> &nums, int k) {
            // write your code here
            int size = nums.size();
            if(size < 1)
                return 0;
    
            int  i= 0, index = 0;
            for(i=0; i<size; i++) {
                if(nums[i] < k) {
                    int temp = nums[i];
                    nums[i] = nums[index];
                    nums[index] = temp;
                    index++;
                }
            }
            return index;
        }
    };
    
  • 相关阅读:
    9 jmeter之检查点
    8 jmeter之集合点
    7 jmeter之参数化
    6 jmeter元件的作用域与执行顺序
    5 jmeter性能测试小小的实战
    4 jmeter badboy脚本开发技术详解
    3 jmeter的两种录制方法
    2 jmeter常用功能介绍-测试计划、线程组
    Errors occurred during the build. Errors running builder 'DeploymentBuilder' on project
    常见异常总结
  • 原文地址:https://www.cnblogs.com/libaoquan/p/7019264.html
Copyright © 2011-2022 走看看