java - 嵌套 for-while 循环超出时间限制

标签 java for-loop runtimeexception

有人可以帮我理解这个时间限制的超越是从哪里来的吗?上下文是,在这个 ThreeSum 方法中,给定一个数组,我试图记录加起来为 0 的三个数字的所有可能组合。原始问题来自: https://leetcode.com/problems/3sum/

public class Solution {
public List<List<Integer>> threeSum(int[] nums) {

    List<List<Integer>> retList = new ArrayList<List<Integer>>();

    Arrays.sort(nums); // O(nlogn)

    for (int i=0; i<nums.length-1; i++){
        int pleft;
        int pright;
        if (i!=0){
            pleft = i-1;
            while((nums[pleft]==nums[i]) && (pleft-1 >=0)){
                pleft--;
            }
        } else {
            pleft = i; 
        }
        if (i!=nums.length-2){
            pright = i+1;
            while((nums[pright]==nums[i]) && (pright+1 < nums.length-1)){
                pright++;
            }
        } else {
            pright = i;
        }
        int sum;
        while (true){
            sum = nums[pleft]+nums[pright]+nums[i];
            if (sum==0){
                List<Integer> temp = new ArrayList<Integer>();
                temp.add(nums[pleft]);
                temp.add(nums[pright]);
                temp.add(nums[i]);
                retList.add(temp);
                if (pleft-1>=0) pleft--;
                if (pright+1<nums.length-1) pright++;
            } else if (sum>0){
                if (pleft-1>=0) pleft--;
            } else { // less than zero
                if (pright+1<nums.length-1) pright++;
            }

        }
    }


    return retList;
}

}

最佳答案

您没有跳出 while(true) 循环。该代码将永远运行并且您不会返回值。您需要添加 break 或将 while (true) 更改为 while (condition)

关于java - 嵌套 for-while 循环超出时间限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40322590/

相关文章:

android - 自定义 session 保存

java - 在没有异常类的java中创建自定义异常?

java - 是否有用于在 Java 中读取、操作和编写 ASN.1 的免费程序包?

java - RabbitMQ - Java Spring - 如何初始化交换到多个队列?

java - 使用 vlcj 示例运行示例 RTSP (JAVA)

python - 使用 for 循环创建立方体整数

安卓 1.6 : "android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application"

java - 使用按钮停止和开始循环

javascript - 使用 Meteor 对集合中的对象进行分组

PHP修改和组合数组