当前位置: 首页 > 知识库问答 >
问题:

如何修复超出内存限制的问题

东郭思远
2023-03-14

这是一个Leetcode问题374。猜数字高或低。描述如下:

我们在玩猜谜游戏。游戏如下:我从1到n中选择一个数字。你必须猜出我选择了哪个数字。每次你猜错了,我都会告诉你我选的数字是高于还是低于你的猜测。调用预定义的API int guess(int num),它返回三个可能的结果:

  • -1: 您的猜测高于我选择的数字(即num

我的代码如下所示,Leetcode在提交时给了我“超出内存限制”的错误。如何修复它?谢谢

/** 
 * Forward declaration of guess API.
 * @param  num   your guess
 * @return       -1 if num is higher than the picked number
 *                1 if num is lower than the picked number
 *               otherwise return 0
 * int guess(int num);
 */

public class Solution extends GuessGame {
    public int guessNumber(int n) {
        int[] nums = new int[n];
        for (int i=0; i < n; i++) {
            nums[i] = i+1;
        }    
        return search(nums,1,n,(int) ((1+n)/2));  
    }
    
    
    public int search(int[] nums, int L, int R, int myguess) { //L,R are values not index
        if (L < R) {
            if (guess(myguess) == 0) {
                return myguess;
            }
            else if (guess(myguess) < 0) { //myguess > pick
                return search(nums,L,myguess-1,(int) ((L+myguess-1)/2));
            }
            else {
                return search(nums,myguess+1,R,(int) ((R+myguess+1)/2));
            }
        }
        else {
            return (L+R)/2;
        }
    }
    
}

共有1个答案

宋嘉禧
2023-03-14

谢谢,修好了。

public class Solution extends GuessGame {
    public int guessNumber(int n) {
        return search(1,n,((1+n)/2));  
    }
    
    
    public int search(int L, int R, int myguess) { //L,R are values not index
        while (L <= R) {
            myguess = L + (R-L)/2;
            if (guess(myguess) == 0) {
                return myguess;
            }
            else if (guess(myguess) < 0) { //myguess > pick
                R = myguess - 1;
            }
            else {
                L = myguess + 1;
            }
        }
        return -1;
        }
    }
    
 类似资料:
  • 我的问题是,当我上传一个文件超过我在脚本中设置的限制(5 MB)时,它会在网站顶部显示此警告: 警告:第0行未知中32485176字节的POST内容长度超过了20971520字节的限制 例如,在这里,我上传了一个文件超过(30 MB),但当我上传一个文件超过(5 MB),小于30(或没有那么大)它不显示警告,只显示我想要的代码错误: 我正在localhost,这个错误每次都出现,我知道如何通过修改

  • 了解如何使用Chrome DevTools查找影响网页性能的内存问题,包括内存泄漏,内存膨胀和频繁的垃圾回收。 TL;DR 使用Chrome任务管理器,了解您的网页使用的内存量。 使用时间轴记录可视化内存使用。 使用堆快照标识分离的DOM树(内存泄漏的常见原因)。 通过分配时间轴记录了解在JS堆中分配新内存的时间。 概述 在[RAIL][RAIL]性能模型中,你的重点应该是你的用户上。 内存问题很

  • 问题内容: 我在增加PHP作为Apache模块的内存限制时遇到问题。 如果我将以下指令放入Apache配置中,则可以正常运行: 但是超过2GB无效,它将恢复为128MB。 这里有什么问题?我需要更多内存来完成一些与PDF相关的任务。 服务器为Debian 2.6.32-5-amd64#1 SMP,PHP 5.3.3-7 + squeeze13,具有12GB物理RAM。 问题答案: 您是否尝试过使用

  • 我已经卸载并安装了3次Homebrew现在,因为它似乎从来不允许我安装任何东西,因为它拒绝我的权限,在大多数安装结束。 作为示例,我将发布当前面临的libjpeg下载场景。 我尝试安装libjpeg并得到:

  • 我有2周的时间来学习和使用MongoDB,我正在使用DataGridview构建一个简单的WinForm APP。 一切正常,但我添加了超过 1.000.000 个文档,现在它向我显示此错误: MongoDB.Driver.MongoCommandException:“命令聚合失败:排序超出了 104857600 字节的内存限制,但未选择加入外部排序。正在中止操作。Pass allowDiskUs

  • 我很好奇如何处理GAE中的内存限制。目前,我有这个应用程序,需要大量的CPU/内存。 我尝试在GAE上使用b8实例运行它(基本上是使用4.8GHz CPU的顶级实例) 我还尝试手动设置CPU的数量 但无论我做什么,我总是达到同样的记忆限制。。。(见下文) GET500 0 B 43 s Unknown/_ah/start在总共处理0个请求后,超过了2048 MB的软内存限制,达到3163 MB。考