当前位置: 首页 > news >正文

LintCode 31. partitionArray 数组划分

31. partitionArray 数组划分

题目链接

lintcode 31 partitionArray 数组划分

题目描述

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

所有小于k的元素移到左边
所有大于等于k的元素移到右边
返回数组划分的位置,即数组中第一个位置 i,满足 nums[i] 大于等于 k。

  1. 注意事项

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

  1. 样例

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

  1. 挑战

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

分析

简单来说就是快排跑一圈

代码

github

class Solution {
public:
    /**
     * @param nums: The integer array you should partition
     * @param k: An integer
     * @return: The index after partition
     */
    int partitionArray(vector<int> &nums, int k) {
        // write your code here
        int i,j;
        int n = nums.size();
        if(n==0) return 0;
        i = 0;
        j=n-1;
        while(i<j)
        {
            while(i<=j && nums[i]<k) i++;
            while(i<=j && nums[j]>=k) j--;
            if(i<j)
            {
                int tmp = nums[i];
                nums[i] = nums[j];
                nums[j] = tmp;
                i++;
                j--;
            }
        }
        return i;
    }
};
测试数据

相关文章:

  • ASP.NET-FineUI开发实践-6(二)
  • 十大经典排序算法(动图演示)(转载)
  • 责任链模式的两种实现
  • eclipse 导入自定义jar包
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Appach 服务器如让IP绑定多个域名
  • 三种方法,刷新 Android 的 MediaStore!让你保存的图片立即出现在相册里!
  • Autocomplete 跨域
  • Remember that adversity is not a dead-end but a detour to a better outcome
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • ubuntu触摸板失效问题
  • Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题...
  • Access数据库LIKE问题
  • 系列文章--WCF后传学习文章
  • 多线程(二)
  • Druid 在有赞的实践
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • js写一个简单的选项卡
  • linux学习笔记
  • Node项目之评分系统(二)- 数据库设计
  • spring学习第二天
  • Theano - 导数
  • vue-router的history模式发布配置
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 批量截取pdf文件
  • 前端性能优化--懒加载和预加载
  • 前嗅ForeSpider教程:创建模板
  • 深度解析利用ES6进行Promise封装总结
  • 小程序开发中的那些坑
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • # .NET Framework中使用命名管道进行进程间通信
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #pragma data_seg 共享数据区(转)
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (1)bark-ml
  • (C语言)球球大作战
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (转)可以带来幸福的一本书
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .form文件_一篇文章学会文件上传
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET Framework与.NET Framework SDK有什么不同?
  • .net 验证控件和javaScript的冲突问题
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET中使用Redis (二)
  • @AliasFor注解
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • @JoinTable会自动删除关联表的数据
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [Angular] 笔记 21:@ViewChild
  • [boost]使用boost::function和boost::bind产生的down机一例
  • [C#]C# winform实现imagecaption图像生成描述图文描述生成
  • [c#基础]值类型和引用类型的Equals,==的区别
  • [CC-FNCS]Chef and Churu