描述:
給出乙個整數陣列 nums 和乙個整數 k。劃分陣列(即移動陣列 nums 中的元素),使得:
返回陣列劃分的位置,即陣列中第乙個位置 i,滿足 nums[i] 大於等於 k。
樣例:
example 1:
input:
,9output:
0
example 2:
input:
[3,2,2,1],2
output:1
explanation:
the real array is[1,2,2,3].so return 1
挑戰
使用 o(n) 的時間複雜度在陣列上進行劃分。
注意事項
你應該真正的劃分陣列 nums,而不僅僅只是計算比 k 小的整數數,如果陣列 nums 中的所有元素都比 k 小,則返回 nums.length。
**:
private void swap(int x,int y)
private int __quicksort(int nums,int left,int right,int k){
//if(left>right)return -1;
int j=left-1;
for(int i=left;i<=right;i++){
if(nums[i]補充說明:
這個題目其實就是快速排序的partition操作,對於快速排序,腦海中一定要有的乙個圖如下:
已知陣列的左起始位置和陣列的右終止位置,從做開始向後遍歷,這道題目不需要選第乙個為標定元素,我們只需要將大於等於v的元素都放入後半部分即可,全部遍歷完成後,j+1的位置即為我們要找的第乙個位置的元素。
LintCode 陣列劃分
給出乙個整數陣列nums和乙個整數k。劃分陣列 即移動陣列nums中的元素 使得 返回陣列劃分的位置,即陣列中第乙個位置i,滿足nums i 大於等於k。您在真實的面試中是否遇到過這個題?yes 樣例給出陣列nums 3,2,2,1 和 k 2,返回 1 注意你應該真正的劃分陣列nums,而不僅僅只...
LintCode 陣列劃分
陣列劃分 給出乙個整數陣列nums和乙個整數k。劃分陣列 即移動陣列nums中的元素 使得 所有小於k的元素移到左邊 所有大於等於k的元素移到右邊 返回陣列劃分的位置,即陣列中第乙個位置i,滿足nums i 大於等於k。樣例 給出陣列nums 3,2,2,1 和 k 2,返回 1 注意 你應該真正的...
LintCode 陣列劃分
給出乙個整數陣列 nums 和乙個整數 k。劃分陣列 即移動陣列 nums 中的元素 使得 所有小於k的元素移到左邊 所有大於等於k的元素移到右邊 返回陣列劃分的位置,即陣列中第乙個位置 i,滿足 nums i 大於等於 k。class solution param nums the integer...