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

双指针法实现twoSum函数无法返回数组元素下标如何解决

问题原因

  • 代码中返回值写的是nums[i]、nums[j],这两个是数组对应位置的元素值,你要返回下标直接返回计数变量i和j即可。
  • 额外注意:当前双指针解法的前提是输入数组已经完成升序排序,如果你的输入是未排序的原始数组,该逻辑无法适配,会出现找不到解、解错误的问题;如果需要支持未排序数组,需要先将元素和原下标绑定后再排序,或者改用哈希表遍历的方案。

修正后的代码(仅适配升序排序数组场景)

// Using Two pointers Approach
class Solution {
    public int[] twoSum(int[] nums, int target){
        // 初始化左右指针
        int i = 0, j = nums.length-1;

        while (i<j){
            if(nums[i] + nums[j] > target){
                j--;
            }else if(nums[i] + nums[j] < target){
                i++;
            }else{
                // 直接返回下标i、j而非对应元素
                return new int[] {i, j};
            }    
        }
        return new int[] {};
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:00:00