zoukankan      html  css  js  c++  java
  • 剑指21: 调整奇数到偶数前

    输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。

    示例:

    输入:nums = [1,2,3,4]
    输出:[1,3,2,4]
    注:[3,1,2,4] 也是正确的答案之一。
     

    提示:

    1 <= nums.length <= 50000
    1 <= nums[i] <= 10000

    这个题双指针不复杂,但是可以使用传递函数的方式,这样对于任何排序要求都不需要改变代码内容,加强了代码的重用性。

     1 class Solution {
     2 public:
     3     vector<int> exchange(vector<int>& nums) {
     4         if(nums.empty()) return nums;
     5         return myexchange(nums,isEven);
     6     }
     7 
     8     vector<int> myexchange(vector<int>& nums, bool(*func)(int)){
     9         auto head=nums.begin(), tail=nums.end()-1;
    10         while(head<tail){
    11             while(head<tail && !func(*head))
    12                 head++;
    13 
    14             while(head<tail && func(*tail))
    15                 tail--;
    16 
    17             if(head<tail){
    18                 int temp=*head;
    19                 *head=*tail;
    20                 *tail=temp;
    21             }
    22         }
    23         return nums;
    24     }
    25 
    26     static bool isEven(int n){
    27         return (n&1)==0?true:false;
    28     }
    29 };
  • 相关阅读:
    假期学习01
    构建之法读后感(二)
    构建之法读后感(一)
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每周日报
    每日日报
  • 原文地址:https://www.cnblogs.com/rookiez/p/13233084.html
Copyright © 2011-2022 走看看