当前位置:网站首页>Sword finger offer 21 Adjust array order so that odd numbers precede even numbers

Sword finger offer 21 Adjust array order so that odd numbers precede even numbers

2022-06-11 08:43:00 zmm_ mohua

The finger of the sword Offer 21. Adjust the array order so that the odd Numbers precede the even Numbers

subject

 Insert picture description here

Code

#include <iostream>
#include <vector>
using namespace std;

//  Method 1 : Time limit exceeded  
vector<int> exchange1(vector<int>& nums) {
    
	int n = nums.size();
	if(n == 0 || n == 1){
    
		return nums;
	}
	for(int i = 0; i < n - 1; i++){
    
		if(nums[i] % 2 == 1){
    
			continue;
		}
		for(int j = i + 1; j < n; j++){
    
			if(nums[j] % 2 == 1){
    
				int temp = nums[i];
				nums[i] = nums[j];
				nums[j] = temp;
				break;
			}
		}
	}
	return nums;
}

//  Method 2 : Using the array , Odd number from to save , Even numbers are saved from back to front  
vector<int> exchange(vector<int>& nums) {
    
	int n = nums.size();
	if(n == 0 || n == 1){
    
		return nums;
	}
	vector<int> res (n);
	int j = 0, k = n - 1;
	for(int i = 0; i < n; i++){
    
		if(nums[i] % 2 == 1){
    
			res[j++] = nums[i];
		}else{
    
			res[k--] = nums[i];
		}
	}
	return res;
}

int main(){
    
	int n;
	cin>>n;
	vector<int> nums(n);
	vector<int> res;
	for(int i = 0; i < n; i++){
    
		cin>>nums[i];
	}
	res = exchange(nums);
	for(int i = 0; i < res.size(); i++){
    
		cout<<res[i]<<" ";
	}
	return 0;
} 
原网站

版权声明
本文为[zmm_ mohua]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/162/202206110827533028.html