zoukankan      html  css  js  c++  java
  • 每日一题leetcode

    调整数组顺序使奇数在偶数前

    输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分

    输入:nums = [1,2,3,4]
    输出:[1,3,2,4] 
    注:[3,1,2,4] 也是正确的答案之一

    方法一:辅助数组

    建立一个数组,以及两个头尾指针指向数组的头和尾,两指针一起移动,遇到奇数前指针遇到偶数放后指针
    class Solution {
        public int[] exchange(int[] nums) {
            int temp[];
            int a = nums.length;
            temp = new int[a];
            int t1 = 0;
            int t2 = nums.length - 1; 
            for(int i:nums){
                if(i % 2 != 0){
                    temp[t1] = i; 
                    t1++;
                }else{
                    temp[t2] = i;
                    t2--;
                }
            }
            return temp;
    
        }
    }
    

      方法二:双指针

    初始化: i , j 双指针,分别指向数组 nums 左右两端;
    循环交换: 当 i = j 时跳出;
    指针 ii 遇到奇数则执行 i=i+1 跳过,直到找到偶数;
    指针 jj 遇到偶数则执行 j=j−1 跳过,直到找到奇数;
    交换 nums[i] 和 nums[j] 值;
    返回值: 返回已修改的nums 数组。

    class Solution {
        public int[] exchange(int[] nums) {
            int t1 = 0;
            int t2 = nums.length - 1;
            int temp = 0; 
            while(t1 < t2){
                while(t1 < t2 && (nums[t1] & 1) == 1) t1++;
                while(t1 < t2 && (nums[t2] & 1) == 0) t2--;
                temp = nums[t1];
                nums[t1] = nums[t2];
                nums[t2] = temp;
            }
        return nums;
    
        }
    }
    

      

  • 相关阅读:
    修改spring boot 启动logo
    查看jvm常用命令
    intellij IDEA破解
    hdu 新生晚会
    How many prime numbers(素数)
    2077 汉诺塔IV
    Factorial
    双人黑白块
    EasyX
    七夕情人节
  • 原文地址:https://www.cnblogs.com/nenu/p/15122296.html
Copyright © 2011-2022 走看看