You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现double数组首尾交替输出的问题求助

首尾交替输出数组元素的实现方案

嘿,这个首尾交替取元素的需求很常见,我给你分享个最直观高效的双指针法,不管数组长度是奇数还是偶数都能完美适配,时间复杂度是O(n),处理起来特别顺手~

核心思路

用两个指针分别锚定数组的开头(left)和结尾(right):

  • 先取left位置的元素,然后left指针右移一位
  • 再取right位置的元素,然后right指针左移一位
  • 重复上述步骤,直到left超过right时停止
  • 注意:当数组长度为奇数时,最后会剩下中间一个元素,这时候只需要单独添加它,不用再取右指针的元素

Java代码实现

public class AlternateArrayPrinter {
    public static void main(String[] args) {
        // 初始化目标double数组
        double[] nums = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0};
        int left = 0;
        int right = nums.length - 1;
        // 用StringBuilder拼接字符串,避免频繁创建对象
        StringBuilder output = new StringBuilder();

        while (left <= right) {
            // 添加左指针指向的元素,格式化为整数样式
            output.append(String.format("%.0f", nums[left]));
            left++;
            // 如果左右指针还没重合,继续添加右指针元素
            if (left <= right) {
                output.append(", ");
                output.append(String.format("%.0f", nums[right]));
                right--;
                // 不是最后一组元素的话,添加分隔逗号
                if (left <= right) {
                    output.append(", ");
                }
            }
        }

        // 输出结果:1, 7, 2, 6, 3, 5, 4
        System.out.println(output.toString());
    }
}

C++代码实现

如果是用C++开发,逻辑完全通用:

#include <iostream>
#include <vector>
#include <sstream>

using namespace std;

int main() {
    vector<double> nums = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0};
    int left = 0;
    int right = nums.size() - 1;
    stringstream output;

    while (left <= right) {
        // 添加左元素,格式化为整数
        output << (int)nums[left];
        left++;
        if (left <= right) {
            output << ", ";
            output << (int)nums[right];
            right--;
            if (left <= right) {
                output << ", ";
            }
        }
    }

    // 输出结果:1, 7, 2, 6, 3, 5, 4
    cout << output.str() << endl;
    return 0;
}

额外小贴士

  • 代码里特意做了格式处理,把double类型的1.0转换成了整数样式的1,完美匹配你要的输出格式
  • 如果数组是空的,可以加个简单的判断(比如if (nums.length == 0))避免索引越界,让代码更健壮

内容的提问来源于stack exchange,提问作者moomin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:41:50