JinFei's Blog

Thinking will not overcome fear but action will.

[LeetCode]89. Gray Code

格雷码

题目描述 The gray code is a binary numeral system where two successive values differ in only one bit. Given a non-negative integer n representing the total number of bits in the code, print the se...

[力扣]892. 三维形体的表面积

三维形体的表面积

题目描述 在 N * N 的网格上,我们放置一些 1 * 1 * 1  的立方体。 每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。 请你返回最终形体的表面积。 Example1: 输入:[[2]] 输出:10 Example2: 输入:[[1,2],[3,4]] 输出:3...

[力扣]面试题10.01. 合并排序的数组

合并数组

题目描述 给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。 初始化 A 和 B 的元素数量分别为 m 和 n。 Example1: 输入: A = [1,2,3,0,0,0], m = 3 B = [2,5,6], n = 3 输出: [1,2,2,3,5...

[力扣]1111. 有效括号的嵌套深度

破题

题目描述 有效括号字符串 定义:对于每个左括号,都能找到与之对应的右括号,反之亦然。详情参见题末「有效括号字符串」部分。 嵌套深度 depth 定义:即有效括号字符串嵌套的层数,depth(A) 表示有效括号字符串 A 的嵌套深度。详情参见题末「嵌套深度」部分。 有效括号字符串类型与对应的嵌套深度计算方法如下图所示: 给你一个「有效括号字符串」 se...

[力扣]365. 水壶问题

倒水

题目描述 有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水? 如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水。 你允许: 装满任意一个水壶 清空任意一个水壶 从一个水壶向另外一个水壶倒水,直到装满或者倒空 Example1: 输入: x = 3, y ...

[力扣]1162. 地图分析

地图分析BFS

题目描述 你现在手里有一份大小为 N x N 的「地图」(网格) grid,上面的每个「区域」(单元格)都用 0 和 1 标记好了。其中 0 代表海洋,1  代表陆地,请你找出一个海洋区域,这个海洋区域到离它最近的陆地区域的距离是最大的。 我们这里说的距离是「曼哈顿距离」( Manhattan Distance):(x0, y0) 和 (x1, y1) 这两个区域之间的距离是 |x...

[力扣]460. LFU缓存

实现LFU

题目描述 请你为 最不经常使用(LFU)缓存算法设计并实现数据结构。它应该支持以下操作:get 和 put。 - get(key) - 如果键存在于缓存中,则获取键的值(总是正数),否则返回 -1。 - put(key, value) - 如果键已存在,则变更其值;如果键不存在,请插入键值对。当缓存达到其容量时,则应该在插入新项之前,使最不经常使用的项无效。在此问题中,当存在平局(...

[力扣]945. 使数组唯一的最小增量

最小增量

题目描述 给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1。 返回使 A 中的每个值都是唯一的最少操作次数。 Example1: 输入:[1,2,2] 输出:1 解释:经过一次 move 操作,数组将变为 [1, 2, 3]。 Example2: 输入:[3,2,1,2,1,7] 输出:6 ...

[力扣]1071. 字符串的最大公因子

字符串的最大公因子

题目描述 对于字符串 S 和 T,只有在 S = T + … + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。 返回最长字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。 Example1: 输入:str1 = "ABCABC", str2 = "ABC" 输出:"ABC" Example2: ...

[力扣]1103. 分糖果 II

分糖果

题目描述 排排坐,分糖果。 我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。 给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n 颗糖果。 然后,我们再回到队伍的起点,给第一个小朋友 n + 1 颗糖果,第二个小朋友 n + 2 颗,依此类推,直到给最后一个小朋友 2 * n 颗糖果。 重复上...