LeetCode
孙笑川奥利给
nmsl,wsngg
展开
-
整数拆分的两种解法
剑指 Offer 14- I. 剪绳子 题意 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。 解法 解法一 我们知道如果一个数如果要分成nnn份,在平均分的时候乘积是最大的(高中不等式知识) 所以我们这里可以遍历分成的份数,原创 2020-07-31 11:12:45 · 813 阅读 · 0 评论 -
3. 无重复字符的最长子串
解题思路 使用滑动窗口法,用以维护一个没有重复字母的队列。使用一个散列表记录每个字母的位置,如果在向后遍历的时候遇到了之前出现过的字母,则跳转到散列表中记录的位置的后一位。每次遇到了之前出现过的字母时都更新一遍最长长度,否则,则把字母位置记录到散列表中。代码如下: class Solution { HashMap<Character, Integer> exists = new...原创 2019-07-02 09:54:43 · 79 阅读 · 0 评论 -
4. 寻找两个有序数组的中位数
题目描述 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。 解题思路 这题是一道很好的分治思想的题目,因为这两个数组是有序的,然后题目的要求是对数复杂度,我们很容易想到分治/二分的做法。求这个总数组的中位数,可以分别求出两个有序数组的中位...原创 2019-07-02 15:17:17 · 88 阅读 · 0 评论 -
10. 正则表达式匹配
题目描述 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ...匹配任意单个字符 ∗*∗ 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。 说明: s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。 解题思路 这题和LCS的思想有点像,我们...原创 2019-07-03 14:36:09 · 111 阅读 · 0 评论 -
LeetCode440. 字典序的第K小数字
题目描述 解题思路 有一说一,这题用树的方式很容易理解,想象有如下一棵树 我们要求第k小的树,也就是求这样一个节点:以从上到下从左到右遍历这棵树它是第k个。因为如上所示的这棵树它从上到下从左到右遍历也就是字典序。所以我们可以按如下的步骤进行 从最顶上的节点出发,从左往右计算以每个子节点为前缀的数字个数numnumnum 如果numnumnum比k大,那么说明深度太浅了,我们将numnumnu...原创 2019-09-23 22:45:20 · 468 阅读 · 0 评论