- 设计思想:
-视频讲解链接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 cnt0
JavaScript版本:
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 如果能通过交换数组中的某些元素使得该数组让牛牛十分满意,请返回牛牛需要最少交换的次数,否则,请返回-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 };