LintCode之奇偶分割数组
Posted echo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LintCode之奇偶分割数组相关的知识,希望对你有一定的参考价值。
题目描述:
我的分析:题目要求将奇数放在偶数的前面,没有要求将奇数或偶数排序,因此我可以设置两个指针,一个(i)指向数组第一个数字,另一个(j)指向数组的最后一个数字,因为奇数要放在前面,所以从后往前找奇数,从前往后找偶数,找到后将这两个数字进行交换,直到i == j。
我的代码:
1 public class Solution { 2 /* 3 * @param nums: an array of integers 4 * @return: nothing 5 */ 6 public void partitionArray(int[] nums) { 7 // write your code here 8 int i=0,j=nums.length-1; 9 while(i < j) { 10 while(i<j && nums[j]%2==0) { 11 j--; 12 } 13 while(i<j && nums[i]%2!=0) { 14 i++; 15 } 16 if(i<j) { 17 int temp = nums[i]; 18 nums[i] = nums[j]; 19 nums[j] = temp; 20 } 21 } 22 } 23 }
以上是关于LintCode之奇偶分割数组的主要内容,如果未能解决你的问题,请参考以下文章
NC41 最长无重复子数组/NC133链表的奇偶重排/NC116把数字翻译成字符串/NC135 股票交易的最大收益/NC126换钱的最少货币数/NC45实现二叉树先序,中序和后序遍历(递归)(代码片段