在保持数组中对应元素(包括负数和正数)各自组内顺序不变的情况下,交换数组中对应的负数和正数元素

给定一个数组,其中负元素个数等于正元素个数(顺序任意)。交换数组中第一个负元素和第一个正元素,然后交换第二个负元素和第二个正元素,依此类推

例如数组 {1, 2, 3, -4, 5, 6, -7, -8, -9, -10},我们把它变成 {-4, -7, -8, 1, -9, -10, 2, 3, 5, 6}

java 复制代码
    public static void main(String[] args) {


        int[] a = {1, 2, 3, -4, 5, 6, -7, -8, -9, -10};
        System.out.println("now:");
        for(int i = 0; i < 10; i++) System.out.printf("%d ", a[i]);

        int pos = -1, neg = -1;
        while(true) {
            while (++pos < 10 && a[pos] < 0) {}
            while (++neg < 10 && a[neg] > 0) {}
            if (pos >= 10 || neg >= 10) { break; }
            int temp = a[pos];
            a[pos] = -a[neg];
            a[neg] = -temp;
        }
        System.out.println("");
        System.out.println("after:");
        for(int i = 0; i < 10; i++) System.out.printf("%d ", -a[i]);

    }

得到结果

相关推荐
程序员清风13 小时前
程序员兼职必看:靠谱软件外包平台挑选指南与避坑清单!
java·后端·面试
皮皮林55114 小时前
利用闲置 Mac 从零部署 OpenClaw 教程 !
java
华仔啊19 小时前
挖到了 1 个 Java 小特性:var,用完就回不去了
java·后端
SimonKing20 小时前
SpringBoot整合秘笈:让Mybatis用上Calcite,实现统一SQL查询
java·后端·程序员
日月云棠1 天前
各版本JDK对比:JDK 25 特性详解
java
用户8307196840822 天前
Spring Boot 项目中日期处理的最佳实践
java·spring boot
JavaGuide2 天前
Claude Opus 4.6 真的用不起了!我换成了国产 M2.5,实测真香!!
java·spring·ai·claude code
IT探险家2 天前
Java 基本数据类型:8 种原始类型 + 数组 + 6 个新手必踩的坑
java
花花无缺2 天前
搞懂new 关键字(构造函数)和 .builder() 模式(建造者模式)创建对象
java
用户908324602732 天前
Spring Boot + MyBatis-Plus 多租户实战:从数据隔离到权限控制的完整方案
java·后端