Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit b8aa21c

Browse files
committed
docs: add No448和No492题解
1 parent 66a69e3 commit b8aa21c

File tree

3 files changed

+129
-0
lines changed

3 files changed

+129
-0
lines changed

leetcode刷题/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
- [No.350 两个数组的交集 II](https://github.com/Mayandev/javascript_algorithm/blob/master/leetcode%E5%88%B7%E9%A2%98/note/No350_intersect.md)
3434
- [No.387 字符串中的第一个唯一字符](https://github.com/Mayandev/javascript_algorithm/blob/master/leetcode%E5%88%B7%E9%A2%98/note/No387_first-uniq-char.md)
3535
- [No.412 Fizz Buzz](https://github.com/Mayandev/javascript_algorithm/blob/master/leetcode%E5%88%B7%E9%A2%98/note/No412_fizz-buzz.md)
36+
- [No.448 找到所有数组中消失的数字](https://github.com/Mayandev/javascript_algorithm/blob/master/leetcode%E5%88%B7%E9%A2%98/note/No448_find-disappeared-numbers.md)
37+
- [No.492 构造矩形](https://github.com/Mayandev/javascript_algorithm/blob/master/leetcode%E5%88%B7%E9%A2%98/note/No492_construct-rectangle.md)
3638

3739
## 分类
3840

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# No.448 找到所有数组中消失的数字
2+
3+
难度:`easy`
4+
5+
给定一个范围在  1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。
6+
7+
找到所有在 [1, n] 范围之间没有出现在数组中的数字。
8+
9+
您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。
10+
11+
## 示例
12+
13+
示例:
14+
15+
```
16+
输入:
17+
[4,3,2,7,8,2,3,1]
18+
19+
输出:
20+
[5,6]
21+
```
22+
23+
## 解题思路
24+
25+
26+
**解题思路一:**
27+
28+
可以使用暴力法求解,但是这样的时间复杂度会比较高。
29+
30+
思路就是从 1 循环到 n,看是否存在与 nums 中,如果不存在,则返回。
31+
32+
代码如下:
33+
34+
```javascript
35+
/**
36+
* @param {number[]} nums
37+
* @return {number[]}
38+
*/
39+
var findDisappearedNumbers = function(nums) {
40+
let n = nums.length;
41+
let arr = [];
42+
for (let i = 1; i <= n; i++) {
43+
if (nums.indexOf(i) < 0) {
44+
arr.push(i);
45+
}
46+
}
47+
return arr;
48+
};
49+
```
50+
51+
**解题思路2:**
52+
53+
可以将通过加上数组长度可以标记元素出现过。求余数数据即可知道原先数字的大小。
54+
55+
代码如下:
56+
57+
```javascript
58+
/**
59+
* @param {number[]} nums
60+
* @return {number[]}
61+
*/
62+
var findDisappearedNumbers = function(nums) {
63+
let n=nums.length;
64+
let ans=[];
65+
//通过加上数组长度可以标记元素出现过。求余数数据即可知道原先数字的大小。
66+
for(let i=0;i<nums.length;i++){
67+
nums[(nums[i]-1)%n]+=n;
68+
}
69+
for(let i=0;i<nums.length;i++){
70+
if(nums[i]<=n)
71+
ans.push(i+1);
72+
}
73+
return ans;
74+
};
75+
```
76+
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# No.492 构造矩形
2+
3+
难度:`easy`
4+
5+
作为一位web开发者, 懂得怎样去规划一个页面的尺寸是很重要的。 现给定一个具体的矩形页面面积,你的任务是设计一个长度为 L 和宽度为 W 且满足以下要求的矩形的页面。要求:
6+
7+
1. 你设计的矩形页面必须等于给定的目标面积。
8+
9+
2. 宽度 W 不应大于长度 L,换言之,要求 L >= W 。
10+
11+
3. 长度 L 和宽度 W 之间的差距应当尽可能小。
12+
13+
14+
你需要按顺序输出你设计的页面的长度 L 和宽度 W。
15+
16+
## 示例
17+
18+
示例:
19+
20+
```
21+
输入: 4
22+
输出: [2, 2]
23+
解释: 目标面积是 4, 所有可能的构造方案有 [1,4], [2,2], [4,1]。
24+
但是根据要求2,[1,4] 不符合要求; 根据要求3,[2,2] 比 [4,1] 更能符合要求. 所以输出长度 L 为 2, 宽度 W 为 2。
25+
26+
```
27+
28+
说明:
29+
30+
- 给定的面积不大于 10,000,000 且为正整数。
31+
- 你设计的页面的长度和宽度必须都是正整数。
32+
33+
## 解题思路
34+
35+
这道题还是比较好想出来的,先直接开方,然后将得数逐渐递增,看是否能被整除。
36+
37+
代码如下:
38+
39+
```javascript
40+
/**
41+
* @param {number} area
42+
* @return {number[]}
43+
*/
44+
var constructRectangle = function(area) {
45+
let sqrt = Math.floor(Math.sqrt(area));
46+
while (area % sqrt) {
47+
sqrt--;
48+
}
49+
return [area / sqrt, sqrt];
50+
};
51+
```

0 commit comments

Comments
 (0)