剑指-面试题21 调整数组顺序使奇数位于偶数前面
2020-04-02 07:30
162 查看
调整数组顺序使奇数位于偶数前面
题目
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
思路:
(1)两个指针,一个首尾各一个。对于首指针,如果该元素是奇数,则不做处理,向后移动一位,尾指针则相反;
(2)当首指针指向偶数,尾指针指向奇数时,swap。
(3)将判断条件单独写成一个函数,这样遇到其它情况直接改判断条件即可。(比如负数在非负数前面、被3整除的在前等等)
(4)判断奇偶的简便写法:(n&1)==1,奇数时True。
C++
class Solution { public: vector<int> exchange(vector<int>& nums) { if(nums.size()==0) return nums; int length = nums.size(); int begin=0,end=length-1; while(begin<end) { while(begin<end && isEven(nums[begin])) ++begin; while(begin<end && !isEven(nums[end])) --end; int temp = nums[begin]; nums[begin] = nums[end]; nums[end] = temp; } return nums; } private: bool isEven(int n) { return (n&1)==1; } };
python
class Solution: def exchange(self, nums: List[int]) -> List[int]: def isEven(n): return (n&1)== 0 length = len(nums) start = 0 end = length-1 while start<end: while start < end and not isEven(nums[start]): start += 1 while start<end and isEven(nums[end]): end -= 1 temp = nums[start] nums[start] = nums[end] nums[end] = temp return nums
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 剑指offer--面试题21:调整数组顺序使奇数位于偶数前面
- 【剑指offer】面试题21:调整数组顺序使奇数位于偶数前面
- 剑指面试题21-调整数组顺序使奇数位于偶数前面
- [待]牛客剑指Offer面试题21:调整数组顺序使奇数位于偶数前面
- 【剑指offer】面试题21-调整数组顺序使奇数位于偶数前面
- 【Golang】LeetCode-剑指Offer-面试题21-调整数组顺序使奇数位于偶数前面【两种解法】
- 【剑指offer】面试题 21:调整数组顺序使奇数位于偶数前面
- 剑指offerr面试题 调整数组顺序使奇数位于偶数前面
- 【剑指Offer学习】【面试题14 :调整数组顺序使奇数位于偶数前面】
- 剑指offer——面试题14:调整数组顺序是奇数位于偶数前面
- 【剑指Offer学习】【面试题14 :调整数组顺序使奇数位于偶数前面】
- 剑指offer——面试题14:调整数组顺序使奇数位于偶数前面
- 剑指offer-面试题14.调整数组顺序使奇数位于偶数的前面
- 【剑指offer】面试题:调整数组顺序使奇数位于偶数前面
- 【剑指offer】面试题14:调整数组顺序使奇数位于偶数前面
- 剑指Offer----面试题14:调整数组顺序使奇数位于偶数前面
- 剑指Offer面试题14[调整数组顺序使奇数位于偶数前面]
- 剑指offer之面试题14 调整数组顺序使奇数位于偶数前面 之菜鸟与小牛写法对比
- 剑指offer面试题21:调整数组顺序使奇数位于偶数前面
- 剑指Offer面试题:13.调整数组顺序使奇数位于偶数前面