调整数组顺序使奇数位于偶数前面(Python and C++解法)
2021-04-30 22:27
标签:pytho exchange 之一 dia and 奇数 答案 nbsp 循环 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 示例: 输入:nums = [1,2,3,4] 来源:力扣(LeetCode) 使用双指针,类似于二分查找法的操作。 调整数组顺序使奇数位于偶数前面(Python and C++解法) 标签:pytho exchange 之一 dia and 奇数 答案 nbsp 循环 原文地址:https://www.cnblogs.com/kongzimengzixiaozhuzi/p/13226209.html题目:
输出:[1,3,2,4]
注:[3,1,2,4] 也是正确的答案之一。
链接: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 and (nums[left] & 1) != 0: # 循环直到左指针指向偶数
8 left += 1
9 while left 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 vectorint> exchange(vectorint>& nums) {
4 int left = 0, right = nums.size() - 1;
5 while (left right) {
6 while (left 1) != 0)
7 left++;
8 while (left 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 };
文章标题:调整数组顺序使奇数位于偶数前面(Python and C++解法)
文章链接:http://soscw.com/essay/80582.html