摘要:
931. 下降路径最小和(中等) 输入为一个 n * n 的二维数组 matrix,请你计算从第一行落到最后一行,经过的路径和最小为多少。 就是说你可以站在 matrix 的第一行的任意一个元素,需要下降到最后一行。 每次下降,可以向下、向左下、向右下三个方向移动一格。也就是说,可以从 matrix 阅读全文
摘要:
labuladong讲解 基本思想都是使用快慢指针,快指针去查找值,慢指针保存值 26. 删除有序数组中的重复项(简单) 思路: 我们让慢指针 slow 走在后面,快指针 fast 走在前面探路,找到一个不重复的元素就告诉 slow 并让 slow 前进一步。这样当 fast 指针遍历完整个数组 n 阅读全文
摘要:
labuladong讲解 316. 去除重复字母(中等) 题目: 思路: 题目的要求总结出来有三点: 要求一、要去重。 要求二、去重字符串中的字符顺序不能打乱 s 中字符出现的相对顺序。 要求三、在所有符合上一条要求的去重字符串中,字典序最小的作为最终结果。 比如说输入字符串 s = "babc", 阅读全文
摘要:
labuladong讲解 528. 按权重随机选择(中等) 题目: 思路: 对于[1,7],我们可以将其膨胀为长度为[1,7]的线段,而后产生[1,7]的int随机数x,当x落在1时返回0,当x落在2-7时返回1.实现等概率。 扩展的线段,可以用前缀和数组表示。 查找与x最接近的左侧数值时可以使用二 阅读全文
摘要:
labuladong讲解 380. 常数时间插入、删除和获取随机元素(中等) 题目: 题目理解: 就是说就是让我们实现如下一个类: class RandomizedSet { public: /** 如果 val 不存在集合中,则插入并返回 true,否则直接返回 false */ bool ins 阅读全文
摘要:
labuladong讲解 870. 优势洗牌(中等) 题目: 给你输入两个长度相等的数组 nums1 和 nums2,请你重新组织 nums1 中元素的位置,使得 nums1 的「优势」最大化。 如果 nums1[i] > nums2[i],就是说 nums1 在索引 i 上对 nums2[i] 有 阅读全文
摘要:
labuladong讲解 410. 分割数组的最大值(困难) 题目: 题目讲解: 给你输入一个数组 nums 和数字 m,你要把 nums 分割成 m 个子数组。 肯定有不止一种分割方法,每种分割方法都会把 nums 分成 m 个子数组,这 m 个子数组中肯定有一个和最大的子数组对吧。 我们想要找一 阅读全文