leetcode 492. 构造矩形(Java版,三种解法)
生活随笔
收集整理的這篇文章主要介紹了
leetcode 492. 构造矩形(Java版,三种解法)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目
https://leetcode-cn.com/problems/construct-the-rectangle/
題解
方法1:O(n^2) 暴力解法
雙循環(huán),小優(yōu)化是:保證寬比長大
public int[] constructRectangle(int area) {int minDif = area;int length = 0; // 大int width = 0; // 小for (int i = 1; i <= area; i++) { // 大for (int j = 1; j <= i; j++) { // 小if (i * j > area) break;else if (i * j == area) {if (i - j < minDif) {minDif = i - j;length = i;width = j;}}}}return new int[]{length, width};}方法2:O(n),雙指針解法
首先取 area 的根,如果直接可以開的整數(shù),那么就直接輸出。
如果不能直接整開,就需要雙指針,一個指大,一個指小不斷向兩邊擴(kuò)展。
方法3:O(n),最快解法
看了別人的 0ms 的解法如下。不知道這個解法為什么會比雙指針耗時更少。
public int[] constructRectangle(int area) {int mid = (int) Math.sqrt(area);while (true) {if (area % mid == 0) {return new int[]{area / mid,mid};} else {mid--;}}}總結(jié)
以上是生活随笔為你收集整理的leetcode 492. 构造矩形(Java版,三种解法)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode 485. 最大连续 1
- 下一篇: leetcode 500. 键盘行(Ja