LintCode 31 陣列劃分

2021-09-18 02:36:34 字數 1054 閱讀 9300

描述:

給出乙個整數陣列 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...