zoukankan      html  css  js  c++  java
  • 调整数组顺序使奇数位于偶数前面(Python and C++解法)

    题目:

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

    示例:

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

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof

    思路:

      使用双指针,类似于二分查找法的操作。

    Python解法:

     1 class Solution:
     2     def exchange(self, nums: List[int]) -> List[int]:
     3         if len(nums) == 0 or len(nums) == 1:
     4             return nums
     5         left, right = 0, len(nums)-1  # 定义左右指针
     6         while left < right:
     7             while left < right and (nums[left] & 1) != 0:  # 循环直到左指针指向偶数
     8                 left += 1
     9             while left < right and (nums[right] & 1) == 0:  # 循环直到右指针指向奇数
    10                 right -= 1
    11             
    12             nums[left], nums[right] = nums[right], nums[left]
    13         return nums

    C++解法:

     1 class Solution {
     2 public:
     3     vector<int> exchange(vector<int>& nums) {
     4         int left = 0, right = nums.size() - 1;
     5         while (left < right) {
     6             while (left < right && (nums[left] & 1) != 0)
     7                 left++;
     8             while (left < right && (nums[right] & 1) == 0)
     9                 right--;
    10             
    11             int temp;
    12             temp = nums[left];
    13             nums[left] = nums[right];
    14             nums[right] = temp;
    15         }
    16         return nums;  // 注意返回方式!!!
    17     }
    18 };
  • 相关阅读:
    Java安装以及环境变量配置
    IPython绘图和可视化---matplotlib
    Tensorboard可视化(关于TensorFlow不同版本引起的错误)
    Tensorboard可视化
    关于Tensorflow安装opencv和pygame
    perl将json转换成xml
    cnblogs终于把以前内容的管理权还给我了~
    final评论2
    final评论1
    psp
  • 原文地址:https://www.cnblogs.com/kongzimengzixiaozhuzi/p/13226209.html
Copyright © 2011-2022 走看看