构造矩形LeetCode问题,看不懂代码

Construct Rectangle LeetCode Problem, Can't Understand Code

提问人:Amanda James 提问时间:2/8/2023 更新时间:2/8/2023 访问量:55

问:

我目前正在研究一个 leetcode 问题来构造一个矩形。一个 int 值将被传递到一个方法中,从那里我需要两个长度和宽度值,其中长度和宽度必须尽可能小,L >= W。我看了几个解决方案,但无法掌握这个概念。在第 4 行,结果不是总是产生面积吗?那么for循环是如何继续的呢?例如,如果面积是 26,我们在第 4 行进行计算,那么我们不是总是在第 4 行得到相同的数字吗?但是,当我运行代码时,它给出了 [13,2] 的正确结果。

1    class Solution {
2    public int[] constructRectangle(int area) {
3        for(int w=(int)Math.sqrt(area);w>0;w--){
4           if((area/w)*w==area)return new int[]{area/w,w};
       }return new int[]{};
    }
 }
Java for 循环 几何

评论

0赞 experiment unit 1998X 2/8/2023
尝试使用调试器单步执行它。查看值在迭代的每个步骤中如何变化。
0赞 experiment unit 1998X 2/8/2023
这与数据的截断有关(即,当您将双精度转换为 int 时)
0赞 WJS 2/8/2023
在第 4 行,结果不是总是产生面积吗?使用整数时则不然。将 put 作为 for 循环中的第一个语句来查看发生了什么。请记住,int arithemetic 会删除分数。System.out.println(area/w + " " + w);
0赞 Dawood ibn Kareem 2/8/2023
这个问题可能会对您有所帮助。
0赞 tgdavies 2/8/2023
是否还要求长度和宽度是整数?“length and width are as small as small as possible 是什么意思”?他们的总和应该是尽可能小的?

答: 暂无答案