美文网首页
根据给定的值划分数组

根据给定的值划分数组

作者: studyever | 来源:发表于2019-07-12 18:19 被阅读0次
算法描述

给定一个数组和一个数k,划分数组,似的左边的值都小于k,右边的数大于等于k,返回划分数组的位置,例:[3, 2, 1] k = 1 --> 1, [2, 8, 3, 7] k = 9 --> 4

解题思路

参照快速排序算法,设左右两个指针,如果左边大于右边,则交换,这里需要注意边界问题,时间复杂度是O(n)

示例代码
public int partitionArray(int[] nums, int k) {
        // write your code here
        if (nums.length <= 0) {
            return 0;
        } 
        int low = 0, high = nums.length - 1; 
        while(low < high) {
            while(nums[low] < k && (low < high)) {
                low++;
            }
            while(nums[high] >= k && (low < high)) {
                high--;
            }
            if (low < high) {
                int temp = nums[low];
                nums[low] = nums[high];
                nums[high] = temp;
                low++;
                high--;
            } 
        }
        if (nums[low] >= k) {
            return low;
        }
        return low + 1;
    }

相关文章

  • 根据给定的值划分数组

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

  • TopK笔记

    面试常见的大数据之TopK 提纲 TopK之单节点(根据值进行排序) 描述:给定一个无序的整数数组,根据值的大小找...

  • 利用 opencv实现图像自适应二值化 --python

    阈值化:给定一个数组和一个与之,然后根据数组中的每个元素的值,是高于还是低于阈值而进行一些操作。如果像素值大于阈值...

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

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

  • JS 根据数组中的某个属性值排序

    JS 根据数组中的某个属性值排序 /* 根据数组中的某个属性值排序 */function compareByKey...

  • 算法---求一个数组中三数之和最接近给定值的组合

    给定一个数组,求三数和最接近给定值value的组合

  • array处理函数

    创建数组array_fill 用给定的值填充数组array_fill_keys 只用指定的键和值填充数组array...

  • iOS_OpenCV图像阈值化 (1)

    图像阈值化的思想是:给定一个数组或者阈值,然后根据数组中的每个元素的值是高于还是低于阈值而进行一些处理。 1、固定...

  • python返回数组的索引和位置的区别

    给定数组 如果想要找到最大值可以使用 进一步,如果想要得到最大值所在的位置,根据英语,感觉argmax就可以做到 ...

  • 冒泡排序

    对于给定的排序的一组数中,根据数组的长度循环遍历,并判断如果前一个值小于后一个值,那么就把“后一个值”排列到“当前...

网友评论

      本文标题:根据给定的值划分数组

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