• LeetCode 922 按奇偶排序数组II


    LeetCode 922 按奇偶排序数组II

    问题描述:
    给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。
    对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。
    你可以返回任何满足上述条件的数组作为答案。
    示例

    • 输入:[4,2,5,7]
    • 输出:[4,5,2,7]
    • 解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。

    双指针

    • 若当前 i 指向数字满足 A[i]%2==i%2 ,则继续向下遍历
    • 若 A[i]%2!=i%2 ,则使用 j 从 i+1 开始向后寻找第一个满足 A[j]%2==i%2 的位置
    • 替换 A[i]、A[j] ,继续使用 i 向后遍历

    执行用时:10 ms, 在所有 Java 提交中击败了7.32%的用户
    内存消耗:39.9 MB, 在所有 Java 提交中击败了81.19%的用户

    class Solution {
        public int[] sortArrayByParityII(int[] A) {
            int i = 0, j = 0, tmp = 0;
            while(i<A.length) {
                if(i%2==A[i]%2) {
                    i++;
                    continue;
                }
    
                j = i+1;
                while(j<A.length) {
                    if(A[j]%2==i%2) {
                        tmp = A[i];
                        A[i] = A[j];
                        A[j] = tmp;
                        break;
                    }
                    j++;
                }
                
                i++;
            }
    
            return A;
        }
    }
    
  • 相关阅读:
    雅虎军规34条 (一)
    jetty和tomcat的区别
    Jsp--9大内置对象
    java 重定向和转发的区别
    layer弹出层
    html 锚点
    css绘制三角形
    原生js下拉菜单联动
    layui省市区下拉菜单三级联动
    tp5时间格式转换
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13962194.html
Copyright © 2020-2023  润新知