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

Java如何实现方法接收{1,2,3,45}格式输入为数组并查找多余元素

正确实现方案

原代码问题

你现有的代码核心问题出在循环逻辑:

  • 首次循环无论当前位置元素是否相等都会直接返回结果,根本不会遍历后续元素,仅在两个数组第一个元素不同、或多出的元素恰好是长数组最后一位的场景下能得到正确结果,其他场景全部报错。

修复后的排序对比方案

如果你要沿用排序后逐个对比的思路,调整逻辑如下:

import java.util.Arrays;

public class Solution {
    
    public static int solution(int[] x, int[] y) {
        int[] shorter = x.length > y.length ? y : x;
        int[] longer = x.length > y.length ? x : y;
        
        Arrays.sort(shorter);
        Arrays.sort(longer);
        
        for (int i = 0; i < shorter.length; i++) {
            if (shorter[i] != longer[i]) {
                return longer[i];
            }
        }
        // 遍历完短数组所有元素都相等,说明多出的元素在长数组末尾
        return longer[longer.length - 1];
    }
}

更优的异或运算方案

排序方案的时间复杂度是O(n log n),可以用异或特性优化到O(n)时间复杂度、O(1)空间复杂度:

  • 相同整数异或结果为0,0和任何整数异或结果为该整数本身
  • 把两个数组的所有元素做异或运算,最终结果就是唯一多出来的元素
    代码如下:
public class Solution {
    
    public static int solution(int[] x, int[] y) {
        int res = 0;
        for (int num : x) {
            res ^= num;
        }
        for (int num : y) {
            res ^= num;
        }
        return res;
    }
}

关于输入的说明

你方法的入参已经定义为int[]类型,题目说明输入直接提供,你不需要手动加new int[]前缀,调用侧会传入符合格式的数组参数,只需要保证方法内部逻辑正确即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:45:03