小白第一次写LeetCode的艰难历程
内容过于絮叨
如有错误欢迎指正
目录
题目
作为一位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 且为正整数。
你设计的页面的长度和宽度必须都是正整数。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/construct-the-rectangle
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
一、思路
首先,已知面积求长宽,这很容易就能想到用两个for的嵌套
然后,题目要求长宽之差最小
第一个想法就是一个个比呗,找出差最小的那个输出,
但是不现实,
于是想到了开平方,从开完平方的数开始找,这找到第一个符合要求的就是答案
二、代码尝试1
于是代码就这么出来了
#include<stdio.h>
int main()
{
int L,W;
int S;
scanf("%d",&S);
for(L=sqrt(S);L<=S;L++){
for(W=1;W<=L;W++){
if(L*W==S){
printf("[%d,%d]",L,W);
goto out;
}
}
}
out:
return 0;
}
dev也编译运行通过了,事情貌似就这么解决了,But...
三、问题
But,力扣要求的代码开头格式是这样的

突然懵逼,这指针我整不明白啊
然后浏览了其他人的解题
发现了两行重要的代码
int *ans = malloc(sizeof(int) * 2);
百度的解释为
表示定义一个int类型的指针变量a,并申请n*sizeof(int)个字节(即4*n个字节)的存储空间。
malloc是在C语言中是一个申请内存单元的函数。
函数原型:void *malloc(unsigned size);
功 能:分配size个字节的内存空间
*returnSize = 2;
尝试后发现写了这条代码后可以打印出两个元素
四、代码尝试2
于是下面的代码又出来了

显示错误,数据溢出
再改
五、最终代码

编译运行成功,终于对了

本文记录了一位初级开发者初次解决LeetCode上构建矩形问题的过程,涉及思路转换、代码调试及内存管理,最终实现面积目标并遵循长度大于宽度的要求。
8万+

被折叠的 条评论
为什么被折叠?



