目录
题目概述:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。
示例:
基础框架
class Solution{ public int[] exchange(int[] nums){ } }
解题思路
利用双指针求解
class Solution{ public int[] exchange(int[] nums){ int left=0,right=nums.length-1; while(left<right){ //当左右指针相遇时表示完成 if(nums[left]%2!=0){ left++; //当左指针为奇数时,左指针向右边移动 }else{ swap(nums,left,right--);//将偶数放在右指针,右指针同时向左移动一位 } } return nums; } public void swap(int[] nums,int left,int right){ int temp=nums[left]; nums[left]=nums[right]; nums[right]=temp; } }
暴力解法
//左右指针 class Solution{ public int[] exchange(int[] nums){ int[] arr =new int[nums.length]; int left=0; int right=nums.length-1; for(int i=0;i<nums.length;i++){ if(nums[i]%2==0){ arr[right--]=nums[i]; }else { arr[left++]=nums[i]; } } return arr; } } //暴力破解,第一次for循环,放奇数,第二次for循环放偶数 class Solution { public int[] exchange(int[] nums) { int[] arr = new int[nums.length]; int ans = 0; for(int i = 0;i < arr.length;i++){ if(nums[i] % 2 != 0){ arr[ans++] = nums[i]; } } for(int i = 0;i < arr.length;i++){ if(nums[i] % 2 == 0){ arr[ans++] = nums[i]; } } return arr; } }