Keshawn_lu's Blog

Keshawn_lu's Blog

Become a better myself.

Leetcode 120. 三角形最小路径和
题目简介:给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。 例如,给定三角形: 123456[ [2], [3,4], [6,5,7], [4,1,8,3]] 自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。 思路:动态规划,dp[i][j]代表从起点开始走到(i, j)点的最小路径和。 首先初始化第一列和最后一列(处理边界问题)。 由于(i, j)只能从(i - 1, j)和(i - 1, j - 1)两个...
Leetcode 350. 两个数组的交集 II
题目简介:给定两个数组,编写一个函数来计算它们的交集。 示例 1: 12输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2] 示例 2: 12输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9] 说明: 输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。 我们可以不考虑输出结果的顺序。 思路:先将两个数组进行排序(从小到大),然后设置两个指针分别指向两个数组的开头。 当nums1[i] == nums2[j],将目标值压入结果数组,然后两个指针都往后移动一位。 若nums1[i] <...
Leetcode 174. 地下城游戏
题目简介:一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。 有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);其他房间要么是空的(房间里的值为 0),要么包含增加骑士健康点数的魔法球(若房间里的值为正整数,则表示骑士将增加健康点数)。 为了尽快到达公主,骑士决定每次只向右或向下移动一步。 编写一个函数...
Leetcode 315. 计算右侧小于当前元素的个数
题目简介:给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。 示例: 1234567输入: [5,2,6,1]输出: [2,1,1,0] 解释:5 的右侧有 2 个更小的元素 (2 和 1).2 的右侧仅有 1 个更小的元素 (1).6 的右侧有 1 个更小的元素 (1).1 的右侧有 0 个更小的元素. 思路:一开始直接用暴力法,然后很顺其自然的挂了。 后来用了二分查找,即从后往前遍历,每次将遍历到的元素与sorted_arr中的元素进行比较,从而得出右侧小...
Leetcode 309. 最佳买卖股票时机含冷冻期
题目简介:给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。 示例: 123输入: [1,2,3,0,2]输出: 3 解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出] 思路:一开始自己想到的动态规划方法参照了昨天做的 恢复空格 的方法,dp[i]代表第i天结束后的最大收益。 首先dp[i] = dp[i - 1]进行初始化...
Leetcode 面试题 17.13. 恢复空格
题目简介:哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子I reset the computer. It still didn’t boot!已经变成了"iresetthecomputeritstilldidntboot"。在处理标点符号和大小写之前,你得先把它断成词语。当然了,你有一本厚厚的词典dictionary,不过,有些词没在词典里。假设文章用sentence表示,设计一个算法,把文章断开,要求未识别的字符最少,返回未识别的字符数。 示例: 12345输入:dictionary = ["looked",&...
Leetcode 面试题 16.11. 跳水板
题目简介:你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。 返回的长度需要从小到大排列。 示例: 12345输入:shorter = 1longer = 2k = 3输出: {3,4,5,6} 提示: 0 < shorter <= longer 0 <= k <= 100000 思路:因为一共就k块板,所以木板的长度为longer * i + shorter * (k - i)(长度从小到大排序)。 ti...
Leetcode 112. 路径总和
题目简介:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1 返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。 思路:深度优先遍历,遍历到叶结点时,进行判定,判断路径和是否...
Leetcode 63. 不同路径 II
题目简介:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径? 网格中的障碍物和空位置分别用 1 和 0 来表示。 说明:m 和 n 的值均不超过 100。 示例 1: 123456789101112输入:[ [0,0,0], [0,1,0], [0,0,0]]输出: 2解释:3x3 网格的正中间有一个障碍物。从左上角到右下角一共有 2 条不同的路径:1. 向右 -> 向...
Leetcode 5454. 统计全 1 子矩形
题目简介:给你一个只包含 0 和 1 的 rows * columns 矩阵 mat ,请你返回有多少个 子矩形 的元素全部都是 1 。 示例 1: 1234567891011输入:mat = [[1,0,1], [1,1,0], [1,1,0]]输出:13解释:有 6 个 1x1 的矩形。有 2 个 1x2 的矩形。有 3 个 2x1 的矩形。有 1 个 2x2 的矩形。有 1 个 3x1 的矩形。矩形数目总共 = 6 + 2 + 3 + 1 + 1 = 13 。 示例 2: 12345678910111213输入:mat = [[0,1,1...
avatar
鸣蜩十九
Always
友链
CSDN BiliBili