- 设计思想:
-视频讲解链接B站视频讲解
- 复杂度分析:
- 代码:
c++版本:
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 如果能通过交换数组中的某些元素使得该数组让牛牛十分满意,请返回牛牛需要最少交换的次数,否则,请返回-1。
* @param n int整型 代表数组中元素的数量
* @param a int整型vector 代表数组中元素的大小
* @return int整型
*/
int findArray(int n, vector<int>& a) {
// write code here
int cnt0 = 0;//统计a[i]为偶数,i为奇数
int cnt1 = 0;//统计a[i]为奇数,i为偶数
for(int i = 0; i < a.size(); ++i){
if(i % 2 == 0 && a[i] % 2 == 0)
continue;
if(i % 2 != 0 && a[i] % 2 != 0)
continue;
if(i % 2 == 0 && a[i] % 2 != 0){
cnt1++;
}
else if(i % 2 != 0 && a[i] % 2 == 0){
cnt0++;
}
}
if(cnt1 != cnt0) return -1;//如果二者不相等没有办法实现题意
return cnt0;
}
};
Java版本:
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 如果能通过交换数组中的某些元素使得该数组让牛牛十分满意,请返回牛牛需要最少交换的次数,否则,请返回-1。
* @param n int整型 代表数组中元素的数量
* @param a int整型一维数组 代表数组中元素的大小
* @return int整型
*/
public int findArray (int n, int[] a) {
// write code here
int cnt0 = 0;//统计a[i]为偶数,i为奇数
int cnt1 = 0;//统计a[i]为奇数,i为偶数
for(int i = 0; i < a.length; ++i){
if(i % 2 == 0 && a[i] % 2 == 0)
continue;
if(i % 2 != 0 && a[i] % 2 != 0)
continue;
if(i % 2 == 0 && a[i] % 2 != 0){
cnt1++;
}
else if(i % 2 != 0 && a[i] % 2 == 0){
cnt0++;
}
}
if(cnt1 != cnt0) return -1;//如果二者不相等没有办法实现题意
return cnt0;
}
}Python版本:
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 如果能通过交换数组中的某些元素使得该数组让牛牛十分满意,请返回牛牛需要最少交换的次数,否则,请返回-1。
# @param n int整型 代表数组中元素的数量
# @param a int整型一维数组 代表数组中元素的大小
# @return int整型
#
class Solution:
def findArray(self , n , a ):
# write code here
cnt0 = 0#统计a[i]为偶数,i为奇数
cnt1 = 0#统计a[i]为奇数,i为偶数
for i in range(0,len(a)):
if(i % 2 == 0 and a[i] % 2 == 0):
continue
if(i % 2 != 0 and a[i] % 2 != 0):
continue
if(i % 2 == 0 and a[i] % 2 != 0):
cnt1 += 1
elif(i % 2 != 0 and a[i] % 2 == 0):
cnt0 += 1
if(cnt1 != cnt0): return -1#如果二者不相等没有办法实现题意
return cnt0JavaScript版本:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 如果能通过交换数组中的某些元素使得该数组让牛牛十分满意,请返回牛牛需要最少交换的次数,否则,请返回-1。
* @param n int整型 代表数组中元素的数量
* @param a int整型一维数组 代表数组中元素的大小
* @return int整型
*/
function findArray( n , a ) {
// write code here
let cnt0 = 0;//统计a[i]为偶数,i为奇数
let cnt1 = 0;//统计a[i]为奇数,i为偶数
for(let i = 0; i < a.length; ++i){
if(i % 2 == 0 && a[i] % 2 == 0)
continue;
if(i % 2 != 0 && a[i] % 2 != 0)
continue;
if(i % 2 == 0 && a[i] % 2 != 0){
cnt1++;
}
else if(i % 2 != 0 && a[i] % 2 == 0){
cnt0++;
}
}
if(cnt1 != cnt0) return -1;//如果二者不相等没有办法实现题意
return cnt0;
}
module.exports = {
findArray : findArray
};
京公网安备 11010502036488号