0


【剑指 offer】21. 调整数组顺序使奇数位于偶数前面

本节目录

刷前点说

以后的话,除了代码想说的话,就会的剪短文章的长度,

因为在写文章上浪费了太多的是时间!

其实刷题是不难的,难的是坚持!

这个分栏是《剑指 offer》 的经典题目,

并在这个博客里记录自己的理解与学习过程!

题目介绍(LINK)

注意看题目:其实题目描述有一点不一样,返回值是不一样的,但是问题不大!

那关于题目的话,我就不做过多的介绍了,照抄的意义不大,我在这里直接贴链接了!

LeetCode链接:点击这里!

NowCoder链接:点击这里!

思路/想法

1. 初始思路/最终思路

最简单的做法就是:遍历之后把奇数和偶数分别放进去就可以。

或者是定义两个引用,奇数从前面放偶数从后放

还有一个方法就是:定义首尾指针,然后首指针遇见奇数后++尾指针遇见偶数后–

首指针遇见偶数,尾指针遇见奇数两指针交换。

这个方法相对位置变的情况的!

为了解决这个问题:就是用了插入排序的思想!

就是从前往后把偶数往后移动腾出位置放入奇数

这样的有点是:偶数和奇数的位置相对位置是不变的

2. 注意点

这道题是一道变种题:

就是有相对位置不变和变两种情况的!

不变的简单一点!

判断奇数和偶数:

非常的简单,十进制转化成二进制的时候最后一位的数字一定是01,和 1

&

的时候,等于1就是奇数等于0就是偶数

自己写的(相对位置变)

首指针遇见奇数后++,尾指针遇见偶数后–;

首指针遇见偶数,尾指针遇见奇数两指针交换!

packagecom.company;importjava.util.Arrays;publicclassMain{publicstaticint[]reOrderArray(int[] array){int left =0;int right = array.length -1;while(left < right){while(left < right &&((array[left]&1)==1)){//首指针遇见奇数后++
                left++;}while(left < right &&((array[right]&1)!=1)){//尾指针遇见偶数后--
                right--;}if(left < right){//交换int temp = array[left];
                array[left]= array[right];
                array[right]= temp;}}return array;}publicstaticvoidmain(String[] args){int[] array ={1,2,3,4,5,6};System.out.println(Arrays.toString(array));System.out.println(Arrays.toString(reOrderArray(array)));}}

NowCoder(相对位置不变)

publicclassSolution{publicvoidreOrderArray(int[] array){if(array ==null|| array.length ==0){return;}int k =0;for(int i =0; i < array.length; i++){if((array[i]&1)==1){//判断为奇数int temp = array[i];//把奇数保存进tmpint j = i;while(j > k){
                    array[j]= array[j -1];//把偶数序列往后移动
                    j--;}
                array[k++]= temp;//把奇数插进去}}}}

LeetCode(相对位置该不该都行)

classSolution{publicint[]exchange(int[] nums){int k =0;for(int i =0; i < nums.length; i++){if((nums[i]&1)==1){int temp = nums[i];int j = i;while(j > k){
                    nums[j]= nums[j -1];
                    j--;}
                nums[k++]= temp;}}return nums;}}

感谢语

这道题笔试的时候出现的机率不大,面试的时候出现的机率大!

所以是比较简单的,大家刷题的时候一定要有耐心慢慢钻研!

标签: leetcode 算法 数组

本文转载自: https://blog.csdn.net/Cbiltps/article/details/122814661
版权归原作者 Cbiltps. 所有, 如有侵权,请联系我们删除。

“【剑指 offer】21. 调整数组顺序使奇数位于偶数前面”的评论:

还没有评论