这是悦乐书的第243次更新,第256篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第110题(顺位题号是492)。对于Web开发人员,了解如何设计网页的大小非常重要。因此,给定一个特定的矩形网页区域,您现在的工作是设计一个矩形网页,其长度L和宽度W满足以下要求:

1.您设计的矩形网页区域必须等于给定的目标区域。

2.宽度W不应大于长度L,这意味着L> = W.

3.长度L和宽度W之间的差异应尽可能小。

您需要按顺序输出您设计的网页的长度L和宽度W.

例:

输入:4

输出:[2,2]

说明:目标区域为4,构建它的所有可能方法是[1,4],[2,2],[4,1]。

但根据要求2,[1,4]是非法的;根据要求3,与[2,2]相比,[4,1]不是最优的。所以长度L是2,宽度W是2。

注意:

  • 给定区域不会超过10,000,000并且是正整数

  • 您设计的网页宽度和长度必须为正整数。

本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

02 第一种解法

给的参数area就是面积,要求输出一个二维数组,数组中的元素为长宽,长是第一个元素,宽是第二个元素,并且长宽之差越小越好,那么长宽之差最小的矩形就是正方形了。

先将area进行开方,得到一个整数正根,然后使用area对其取余,如果能够整除,那么就是长,不能就依次自减,最后输出一个长度为2的数组。

public int[] constructRectangle(int area) {
int sqrt = (int)Math.sqrt(area);
while (area%sqrt != 0) {
sqrt--;
}
return new int[]{area/sqrt, sqrt};
}

03 第二种解法

我们也可以做乘法,从1开始算起,只要当前宽的平方小于等于面积,就一直算下去,循环内部,我们依旧使用面积对宽取余,能够整除就是长。

public int[] constructRectangle2(int area) {
int W = 1;
for (int i=W; i*i <= area; i++) {
if (area%i == 0) {
W = i;
}
}
return new int[]{area/W, W};
}

04 小结

算法专题目前已日更超过三个月,算法题文章110+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

LeetCode算法题-Construct the Rectangle(Java实现)的更多相关文章

  1. LeetCode算法题-Construct String from Binary Tree(Java实现)

    这是悦乐书的第273次更新,第288篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第141题(顺位题号是606).构造一个字符串,该字符串由二叉树中的括号和整数组成,并具 ...

  2. LeetCode算法题-Construct Quad Tree(Java实现)

    这是悦乐书的第224次更新,第237篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第91题(顺位题号是427).我们想使用四叉树来存储N×N布尔网格.网格中的每个单元格只 ...

  3. LeetCode算法题-Rotate String(Java实现)

    这是悦乐书的第317次更新,第338篇原创 在开始今天的算法题前,说几句,今天是世界读书日,推荐两本书给大家,<终身成长>和<禅与摩托车维修艺术>,值得好好阅读和反复阅读. 0 ...

  4. LeetCode算法题-Rotated Digits(Java实现)

    这是悦乐书的第316次更新,第337篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第185题(顺位题号是788).如果一个数字经过180度旋转后,变成了一个与原数字不同的 ...

  5. LeetCode算法题-Toeplitz Matrix(Java实现)

    这是悦乐书的第312次更新,第333篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第181题(顺位题号是766).如果从左上角到右下角的每个对角线具有相同的元素,则矩阵是 ...

  6. LeetCode算法题-Flood Fill(Java实现)

    这是悦乐书的第306次更新,第325篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第173题(顺位题号是733).图像由二维整数数组表示,每个整数表示图像的像素值(从0到 ...

  7. LeetCode算法题-Image Smoother(Java实现)

    这是悦乐书的第282次更新,第299篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第150题(顺位题号是661).给定表示图像灰度的2D整数矩阵M,您需要设计一个平滑器以 ...

  8. LeetCode算法题-Design LinkedList(Java实现)

    这是悦乐书的第300次更新,第319篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第168题(顺位题号是707).设计链表的实现.您可以选择使用单链表或双链表.单链表中的 ...

  9. LeetCode算法题-Design HashMap(Java实现)

    这是悦乐书的第299次更新,第318篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第167题(顺位题号是706).在不使用任何内置哈希表库的情况下设计HashMap.具体 ...

随机推荐

  1. 【实战分享】又拍云 OpenResty / Nginx 服务优化实践

    2018 年 11 月 17 日,由 OpenResty 主办的 OpenResty Con 2018 在杭州举行.本次 OpenResty Con 的主题涉及 OpenResty 的新开源特性.业界 ...

  2. 使用 Nginx 在 Linux 上托管 ASP.NET Core 应用程序

    本文于2019年04月10日将标题「CentOS7 部署 ASP.NET Core应用程序」修改为「使用 Nginx 在 Linux 上托管 ASP.NET Core 应用程序」. 环境准备 VMwa ...

  3. Android--操作图片Exif信息

    前言 在Android系统中,图片文件在内存中以像素点的二维数组加载,存放像素信息,还会在开头加上一些额外的照片拍摄参数信息,这些信息就是Exif.Android2.0之后,媒体库加入了操作图片Exi ...

  4. python字符串格式化笔记

    我有个问题:我没有发现%f和%F的区别,希望大神们可以帮我解答下 格式化字符 说明 %c 转换成字符(ASCII 码值,或者长度为一的字符串) %r 用repr()函数进行字符串转化(调试的时候用这个 ...

  5. Java基础12:深入理解Class类和Object类

    更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...

  6. log4j2 使用纪要

    简介 Apache Log4j 2 是Log4j 的升级版,在该版本实现中,日志的处理流程及效率有了显著提升. 此外新版本也合入了一些logback日志框架体系的一些改进点. 关键特性 API分离,接 ...

  7. linux rsync 实际应用

    linux rsync 实际应用 一.rsync的概述 rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync.rsync是Linux系统下的文件同步和 ...

  8. Perl多线程(2):数据共享和线程安全

    线程数据共享 在介绍Perl解释器线程的时候一直强调,Perl解释器线程在被创建出来的时候,将从父线程中拷贝数据到子线程中,使得数据是线程私有的,并且数据是线程隔离的.如果真的想要在线程间共享数据,需 ...

  9. 批量修改mac系统文件的可读写权限

    www 修改 /Users/feiwang 文件夹下的www 下的所有文件和文件的可读写权限.

  10. [Go] go get获取官方库被墙解决

    1.直接在github上clone对应的代码 , 地址为: https://github.com/golang/xxxxxxx.git xxxxxxx为所缺的库名  , 比如net库  text库 h ...