LintCode 陣列劃分

2021-07-05 13:58:54 字數 667 閱讀 1587

陣列劃分

給出乙個整數陣列nums和乙個整數k。劃分陣列(即移動陣列nums中的元素),使得:

所有小於k的元素移到左邊

所有大於等於k的元素移到右邊

返回陣列劃分的位置,即陣列中第乙個位置i,滿足nums[i]大於等於k。

樣例 給出陣列nums=[3,2,2,1]和 k=2,返回 1

注意 你應該真正的劃分陣列nums,而不僅僅只是計算比k小的整數數,如果陣列nums中的所有元素都比k小,則返回nums.length。

挑戰 要求在原地使用o(n)的時間複雜度來劃分陣列

solution:

方法一:一種比較簡單直接的方法就是相對nums排序,然後查詢第乙個大於等於k的元素的索引

class solution 

return nums.size();

}};

方法二:保持兩個前後索引 i 和 j , 其中 i <= j, nums[i] < k and nums[j] >= k; 否則就交換這個元素

class solution 

}return i;

}private :

inline

void swap(int &a, int &b)

};

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。class solution param nums the integer...

LintCode 陣列劃分

給出乙個整數陣列nums和乙個整數k。劃分陣列 即移動陣列nums中的元素 使得 返回陣列劃分的位置,即陣列中第乙個位置i。滿足nums i 大於等於k。您在真實的面試中是否遇到過這個題?yes 例子 給出陣列nums 3,2,2,1 和 k 2。返回 1 注意 你應該真正的劃分陣列nums。而不只...