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,重新开始累加;
代码语言:javascript复制 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则是矩形的长,此时它们之间的差距最小;
代码语言:javascript复制 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;
}