陣列劃分
給出乙個整數陣列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。而不只...