922. 按奇偶排序数组 II 简单

[复制链接]
发表于 2025-10-31 10:05:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
 922. 按奇偶排序数组 II
   给定一个非负整数数组 nums,  nums 中一半整数是 奇数 ,一半整数是 偶数 。
  对数组举行排序,以便当 nums 为奇数时,i 也是 奇数 ;当 nums 为偶数时, i 也是 偶数 。
  你可以返回 任何满足上述条件的数组作为答案 。
  
  示例 1:
  1. <strong>输入:</strong>nums = [4,2,5,7]
  2. <strong>输出:</strong>[4,5,2,7]
  3. <strong>解释:</strong>[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。
复制代码
示例 2:
  1. <strong>输入:</strong>nums = [2,3]
  2. <strong>输出:</strong>[2,3]
复制代码
提示:
  

  • 2 <= nums.length <= 2 * 104
  • nums.length 是偶数
  • nums 中一半是偶数
  • 0 <= nums <= 1000
  1. class Solution {
  2. public:
  3.     vector<int> sortArrayByParityII(vector<int>& nums) {
  4.         int n = nums.size();
  5.         int j = 1;
  6.         for(int i = 0; i < n; i+=2)
  7.         {
  8.             if(nums[i]%2==1)
  9.             {
  10.                 while(nums[j]%2==1)
  11.                     j+=2;
  12.                 swap(nums[i],nums[j]);
  13.             }
  14.         }
  15.         return nums;
  16.     }
  17. };
复制代码
  1. class Solution {
  2. public:
  3.     vector<int> sortArrayByParityII(vector<int>& nums) {
  4.         int left = 0, right = 1;
  5.         while(left < nums.size() && right < nums.size())
  6.         {
  7.             while(left < nums.size() && nums[left] % 2 == 0)  left += 2;
  8.             while(right < nums.size() && nums[right] % 2 == 1) right += 2;
  9.             if(left < nums.size() && right < nums.size())
  10.                 swap(nums[left], nums[right]);
  11.         }
  12.         return nums;
  13.     }
  14. };
复制代码

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表