lintcode-medium-Partition Array
2016-04-03 19:03
489 查看
Given an array
All elements < k are moved to the left
All elements >= k are moved to the right
Return the partitioning index, i.e the first index i nums[i] >= k.
Notice
You should do really partition in array nums instead of just counting the numbers of integers smaller than k.
If all elements in nums are smaller than k, then return nums.length
Example
If nums =
Challenge
Can you partition the array in-place and in O(n)?
numsof integers and an int
k, partition the array (i.e move the elements in "nums") such that:
All elements < k are moved to the left
All elements >= k are moved to the right
Return the partitioning index, i.e the first index i nums[i] >= k.
Notice
You should do really partition in array nums instead of just counting the numbers of integers smaller than k.
If all elements in nums are smaller than k, then return nums.length
Example
If nums =
[3,2,2,1]and
k=2, a valid answer is
1.
Challenge
Can you partition the array in-place and in O(n)?
public class Solution { /** *@param nums: The integer array you should partition *@param k: As description *return: The index after partition */ public int partitionArray(int[] nums, int k) { //write your code here if(nums == null || nums.length == 0) return 0; int left = 0; int right = nums.length - 1; while(true){ while(left < right && nums[left] < k) left++; while(left < right && nums[right] >= k) right--; if(left == right) break; swap(nums, left, right); } if(nums[left] < k) return left + 1; else return left; } public void swap(int[] nums, int i, int j){ int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; return; } }
相关文章推荐
- Java 四种线程池的用法分析
- 【C语言】顺序表
- 【iOS知识学习】_iOS动态改变TableView Cell高度
- 关于swift中的"闭包"
- Linux内核分析-分析Linux内核创建一个新进程的过程
- Linux的网卡由eth0变成了eth1,如何修复
- 单链表的应用1(去重)
- 金融风险和防范
- linux命令(二)arch命令
- OpenNLP进行中文命名实体识别(下:载入模型识别实体)
- CentOS 6.0找不到ifcfg-eth0解决方案
- Billboard
- 蚂蚁金服张洁:基于深度学习的支付宝人脸识别技术解秘-1
- 13.裸机程序和交叉编译工具链
- 两个集合的差
- 互联网公司GitHub repo 语言使用情况
- 20145320 《Java程序设计》第5周学习总结
- js+json实现ajax实例
- 《Linux内核与分析》第六周
- 229. Majority Element II