2022-3-19 剑指offer day36

Posted 阿ming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022-3-19 剑指offer day36相关的知识,希望对你有一定的参考价值。

题1:

JZ21 调整数组顺序使奇数位于偶数前面(一)

描述

输入一个长度为 n 整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
 
数据范围:0 \\le n \\le 50000n5000,数组中每个数的值 0 \\le val \\le 100000val10000
要求:时间复杂度 O(n)O(n),空间复杂度 O(n)O(n)
进阶:时间复杂度 O(n^2)O(n2),空间复杂度 O(1)O(1)
 import java.util.*;
 
 
 public class Solution 
     /**
      * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
      *
      * 
      * @param array int整型一维数组 
      * @return int整型一维数组
      */
     public int[] reOrderArray (int[] array) 
         // write code here
         int n=array.length;
         int[] odd=new int[n];
         int[] eve=new int[n];
         int p1=0,p2=0;
         for (int i=0;i<n;i++)
             if (array[i]%2==0) 
                 eve[p2]=array[i];
                 p2++;
             else
                 odd[p1]=array[i];
                 p1++;
             
         
         for (int i=0;i<p1;i++)
             array[i]=odd[i];
         
         for (int i=p1;i<p1+p2;i++)
             array[i]=eve[i-p1];
         
         return array;
     
 

思路:将奇数跟偶数存在两个数组再修改原数组。

题2:

JZ39 数组中出现次数超过一半的数字

描述

给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。
 
数据范围:n \\le 50000n50000,数组中元素的值 0 \\le val \\le 100000val10000
要求:空间复杂度:O(1)O(1),时间复杂度 O(n)O(n)

输入描述:

保证数组输入非空,且保证有解
 
 public class Solution 
     public int MoreThanHalfNum_Solution(int [] array) 
         int ans=0;
         int count=0;
         for (int x:array) 
             if (count==0) 
                 ans=x;
                 count++;
             
             else 
                 if (ans!=x) count--;
                 else count++;
             
         
         return ans;
     
 

思路:投票算法。待定一个预选值与计数,当计数为0时,预选值为当前值,如果下一个与当前一样,计数加1,否则计算减1。类似于把不同的抵消掉、

以上是关于2022-3-19 剑指offer day36的主要内容,如果未能解决你的问题,请参考以下文章

剑指Offer打卡目录(Java实现)

《剑指offer》专题—算法训练 day02

《剑指offer》专题—算法训练 day01

《剑指offer》专题—算法训练 day05

《剑指offer》专题—算法训练 day04

《剑指offer》专题—算法训练 day03