20200503
Plan
leetcode 每日一题
Notes
- 三维形体的表面积 在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。请你返回最终形体的表面积。
示例 1: 输入:[[2]] 输出:10
示例 2: 输入:[[1,2],[3,4]] 输出:34
示例 3: 输入:[[1,0],[0,2]] 输出:16
示例 4: 输入:[[1,1,1],[1,0,1],[1,1,1]] 输出:32
示例 5: 输入:[[2,2,2],[2,1,2],[2,2,2]] 输出:46
这个题意理解了很久,后来明白了,数组的坐标代表网格的坐标,数组的值代表该网格处的正方体个数。 比如示例1:数组[0][0]=2,表示在网格(0,0)有两个正方体 比如示例2:数组[0][0]=1,[0][1]=2,表示在网格(0,0)有一个正方体,在网格(0,1)有两个正方体。 这样一看就好理解了,其实就是二维数组中,每一维数组表示一列,数组中的每一个值表示该列从下到上的正方体个数。 理解了题意,就比较容易想到办法了。 1.对每一个单元格,判断上下左右四个位置的单元格正方体数,如果上下左右的单元格正方体数比当前的单元格正方体数多,则该面表面积为0;如果比当前的单元格正方体数少,则该面表面积为当前单元格正方体数-相应位置的单元格正方体数。 2.如果上下左右某一个面已经在边上,那么该面的表面积就为当前的单元格正方体数。 3.每一个单元格需要加上上下两个面的表面积。这里注意该题下面的表面积也算,刚开始没加所以算得不对。
注意:对某个单元格正方体数为0的,需要跳过不进行上面的判断,虽然对上面(1)(2)的判断都不会有问题,但是对第三个判断正方体数为0时还是会+2,显然是不对的。
面试题 01.06. 字符串压缩 字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。
示例1:
输入:"aabcccccaaa" 输出:"a2b1c5a3" 示例2:
输入:"abbccd" 输出:"abbccd" 解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。
比较简单的一道题,就按照正常从前往后遍历就行。
- 反转链表 II 反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 说明: 1 ≤ m ≤ n ≤ 链表长度。
示例: 输入: 1->2->3->4->5->NULL, m = 2, n = 4 输出: 1->4->3->2->5->NULL
也是比较简单的一道题,按照正常的遍历就可以,增加一个计数i表示当前是第几个节点,如果m=<i<=n,则逆序插入,否则顺序插入。