【Leetcode -485.最大连续1的个数 -492.构造矩形】

简介: 【Leetcode -485.最大连续1的个数 -492.构造矩形】

Leetcode -485.最大连续1的个数

题目:给定一个二进制数组 nums , 计算其中最大连续 1 的个数。

示例 1:

输入:nums = [1, 1, 0, 1, 1, 1]

输出:3

解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.

示例 2:

输入:nums = [1, 0, 1, 1, 0, 1]

输出:2

思路是遍历一次数组,如果是1就使用变量count累加,每次累加完与变量max判断谁大,谁大max就取谁;如果是0,count就清0,重新开始累加;

int findMaxConsecutiveOnes(int* nums, int numsSize)
    {
        int count = 0, max = 0;
        //遍历数组
        for (int i = 0; i < numsSize; i++)
        {
            //如果是1,count就累加
            if (nums[i])
                count++;
            //如果是0,count从0开始重新计算
            else
                count = 0;
            //每次nums[i]是1,count累加完,就判断 max与count谁大,谁大就取谁
            max = count > max ? count : max;
        }
        return max;
    }

Leetcode - 492.构造矩形

题目:作为一位web开发者, 懂得怎样去规划一个页面的尺寸是很重要的。

所以,现给定一个具体的矩形页面面积,你的任务是设计一个长度为 L 和宽度为 W 且满足以下要求的矩形的页面。

要求:

你设计的矩形页面必须等于给定的目标面积。

宽度 W 不应大于长度 L ,换言之,要求 L >= W 。

长度 L 和宽度 W 之间的差距应当尽可能小。

返回一个 数组 [L, W],其中 L 和 W 是你按照顺序设计的网页的长度和宽度。

示例1:

输入 : 4

输出 : [2, 2]

解释 : 目标面积是 4, 所有可能的构造方案有[1, 4], [2, 2], [4, 1]。

但是根据要求2,[1, 4] 不符合要求; 根据要求3,[2, 2] 比[4, 1] 更能符合要求.所以输出长度 L 为 2, 宽度 W 为 2。

示例 2:

输入: area = 37

输出 : [37, 1]

示例 3 :

输入 : area = 122122

输出 : [427, 286]

思路是因为area = L * W,所以L = area/W;area是可以被W整除的,我们需要寻找面积area开方后,第一个可以整除area的数,这个数就是宽W,而L = area/W则是矩形的长,此时它们之间的差距最小;

int* constructRectangle(int area, int* returnSize)
    {
        //只需要返回两个数,所以两个整型空间足矣
        int* ans = (int*)malloc(sizeof(int) * 2);
        *returnSize = 2;
        //因为 area = L * W,所以L = area/W;area是可以被W整除的
        //L * W = area >= W * W,所以有 W <= sqrt(area),
        //所以我们需要判断 W = sqrt(area)后,是否可以整除area,若可以L = area/W;否则,W一直减减再判断
        int W = sqrt(area);
        while (area % W)
        {
            W--;
        }
        ans[0] = area / W;
        ans[1] = W;
        return ans;
    }
目录
相关文章
|
6月前
【Leetcode 2645】构造有效字符串的最小插入数 —— 动态规划
状态定义:`d[i]`为将前 i 个字符拼凑成若干个 abc 所需要的最小插入数。状态转移方程: 如果` word[i]>word[i−1]`,那么`word[i]`可以和`word[i−1]`在同一组 abc 中,`d[i]=d[i−1]−1` ;否则`word[i]`单独存在于一组 abc 中,`d[i]=d[i−1]+2`
|
1月前
【LeetCode 37】106.从中序与后序遍历构造二叉树
【LeetCode 37】106.从中序与后序遍历构造二叉树
14 0
|
3月前
|
Python
【Leetcode刷题Python】105. 从前序与中序遍历序列构造二叉树
LeetCode上105号问题"从前序与中序遍历序列构造二叉树"的Python实现,通过递归方法根据前序和中序遍历序列重建二叉树。
25 3
|
5月前
|
存储 SQL 算法
LeetCode 题目 85:最大矩形
LeetCode 题目 85:最大矩形
|
5月前
|
存储 SQL 算法
LeetCode面试题84:柱状图中最大的矩形
LeetCode面试题84:柱状图中最大的矩形
|
6月前
|
Go
golang力扣leetcode 105.从前序与中序遍历序列构造二叉树
golang力扣leetcode 105.从前序与中序遍历序列构造二叉树
59 0
|
6月前
|
算法
代码随想录算法训练营第六十天 | LeetCode 84. 柱状图中最大的矩形
代码随想录算法训练营第六十天 | LeetCode 84. 柱状图中最大的矩形
47 3
|
6月前
|
Go C++
【力扣】2645. 构造有效字符串的最小插入数(动态规划 贪心 滚动数组优化 C++ Go)
【2月更文挑战第17天】2645. 构造有效字符串的最小插入数(动态规划 贪心 滚动数组优化 C++ Go)
43 8
|
6月前
代码随想录Day51 完结篇 LeetCode T84 柱状图的最大矩形
代码随想录Day51 完结篇 LeetCode T84 柱状图的最大矩形
38 0
|
6月前
|
算法 测试技术 C#
【单调栈】【区间合并】LeetCode85:最大矩形
【单调栈】【区间合并】LeetCode85:最大矩形