<LeetCode> 题31:数组划分
2016-07-31 15:36
330 查看
题目描述:
给出一个整数数组 nums 和一个整数 k。划分数组(即移动数组 nums 中的元素),使得:–>所有小于k的元素移到左边
–>所有大于等于k的元素移到右边
返回数组划分的位置,即数组中第一个位置 i,满足 nums[i] 大于等于 k。
注意事项:
你应该真正的划分数组 nums,而不仅仅只是计算比 k 小的整数数,如果数组 nums 中的所有元素都比 k 小,则返回 nums.length。例如:
给出数组 nums = [3,2,2,1] 和 k = 2,返回 1。
代码:
class Solution { public: int partitionArray(vector<int> &nums, int k) { if(nums.size() == 0) { return 0; } int i = 0; int j = nums.size() - 1; while(i <= j) { while(i <= j && nums[i] < k) { i++; } while(i <= j && nums[j] >= k) { j--; } if(i <= j) { swap(nums[i], nums[j]); i++; j--; } } return i; } };
相关文章推荐
- <LeetCode> 题6:合并两个排序数组
- <LeetCode> 题41:最大子数组
- <google面试题>实现两个N*N矩阵的乘法,矩阵由一维数组表示
- 字符型指针变量与字符数组的区别 <转>
- <C#>找出数组中重复次数最多的数值
- <leetcode>String to Integer (atoi)
- <Leetcode>Median of Two Sorted Arrays
- <<Accelerated C# 2008>>笔记3容器&&数组&&迭代器
- <LeetCode><Easy>231 Power of Two
- <leetcode> Permutations
- <leetcode> Combination Sum
- <LeetCode><Easy>278First Bad Version (二分查找)
- <1>c语言实现ATM存取款系统(数组)
- 黑马程序员——>第三天<语句、函数、数组简介>
- <CoreJava> 5.3 泛型数组列表
- <高质量C>C指针,数组和字符串
- <php 代码积累 -- 数组相关>
- <Java Class> 1.1数组初始化
- <Power Shell>05解决powershell3.0收集数据时候数组生成
- <Leetcode>TWO SUM