for 循环的条件部分使用变量

问题描述 投票:0回答:1

我正在尝试解决leetcode中的two sum。我最初的解决方案是:

class Solution {
    public int[] twoSum(int[] nums, int target) {
        int lnght = nums.length;
        int i,j = 0;
        for (i = 0; i < lngth -1; i++) {
           for (j = 1; j < lngth; j++) {
               if (nums[i] + nums[j] == target) {
                   int[] result = {i,j};
                   return result;
               }
           }
        }
    }    
}

但这返回了无法找到“lngth”变量错误,如下所示:

Main.java:13: error: cannot find symbol
        for (i = 0; i < lngth -1; i++) {
                        ^
symbol:   variable lngth
location: class Solution
Main.java:14: error: cannot find symbol
           for (j = 1; j < lngth; j++) {
                           ^
symbol:   variable lngth
location: class Solution
 2 errors

我设法通过在 for 循环中将 lnght 替换为 nums.length 找到了解决方法。为什么这个有效,而不是我原来的实现?

此外,仅替换变量是行不通的。我必须在 for 循环之后添加一个 return 语句,如下所示:

class Solution {
public int[] twoSum(int[] nums, int target) {
    int lnght = nums.length;
    int i,j = 0;
    for (i = 0; i < nums.length -1; i++) {
       for (j = 1; j < nums.length; j++) {
           if (nums[i] + nums[j] == target) {
               int[] result = {i,j};
               return result;
           }
       }
    }
    int[] result = {i,j};
    return result;
}    
}

为什么这个有效,而直接从 if 语句内部返回却不起作用?

感谢您的宝贵时间。

java for-loop syntax
1个回答
0
投票

正如评论中所说,

lngth != lnght

对于问题的第二部分,我们需要循环外部的 return 语句,而不仅仅是循环内部。考虑未进入循环的情况。

© www.soinside.com 2019 - 2024. All rights reserved.