题目如上,一个背包类 dp 问题。感觉该题的解题思路算是相当经典了,小记一下。 做这个题有如下感悟: 1、dp 是一个运筹学问题,做题时不要忽略方程的本质:用小问题表示大问题,用函数表示函数。大问题可以用小问题表示,反过来,小问题的组合可以合并为大问题。在多维 dp 中要尤其注意,这可以帮助我们将一 ...
分类:
其他好文 时间:
2020-05-03 00:57:49
阅读次数:
57
题目描述 根据二叉树的前序遍历和中序遍历的结构,重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不包含重复的数字 解题思路 前序遍历的第一个值为根节点的值,使用这个值将中序遍历结果分成两部分,左部分分为树的左子树中序遍历结果,右部分为树的右子树中序遍历结果。 代码 ...
分类:
其他好文 时间:
2020-05-03 00:39:03
阅读次数:
53
无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 示例 1: 示例 2: 示例 3: 解题思路 一开始认为只有英文字母 跑测试用例的时候报错的是空格 就扩大了bool mark[]标记集的范围 实际上还是暴力解决 n2的复杂度 一个个在bool集里判断 如 ...
分类:
其他好文 时间:
2020-05-02 19:22:48
阅读次数:
52
? 第一次解题思路: 遍历数组,将数字和出现的次数装到map集合 遍历map集合,取到题目要求值 (其实不能用Map(空间复杂度O(n))) 优化 解题思路:分组位运算 ? 题目要求时间复杂度O(n),空间复杂度为O(1),因此不能用map(空间复杂度O(n)) ? 代码如下: ...
分类:
编程语言 时间:
2020-05-02 18:54:22
阅读次数:
53
暴力求解 优化 解题思路 准备两个指针,一个指向开头,一个指向结尾,此时容器的底最大的 随着指针向内移动,会造成容器的底变小,在这种情况下想让容器盛水变多,就只能在容器的嗷下功夫。 那我们如何决策哪个指针移动呢?我们能够发现不管是左指针向右移一位,还是右指针想左移一位,容器的底都是一样的,都比原来减 ...
分类:
其他好文 时间:
2020-05-02 18:37:12
阅读次数:
60
基本上算是一道数学题,给出一个数字K,问有多少个非负整数的阶乘末尾有K个零。当初只知道答案只可能是0或5,因为末尾有0必定是2和5的乘积,每过五个数末尾0的数量一定会改变,求出阶乘有多少个2 5就不容易了,因为不可能实际求出阶乘。问题可以转变成求出有多少个因子5,因为2一定比5多,后来看了官方的解题 ...
分类:
其他好文 时间:
2020-05-02 17:12:21
阅读次数:
48
https://codeforces.com/contest/1348/problem/C 题意: 给你一个长度为n的字符串,要求你将它的字符分为k份,每份个数至少有1个,使得新组合的字符串中字典序最大的字符串的字典序尽可能小,打印这个字符串。 解题思路: 先sort下,然后给每份分一个字符,如果第 ...
分类:
其他好文 时间:
2020-05-02 16:34:27
阅读次数:
53
# 解题思路 对于无重复最长子串这类问题,通常可以采用两种解决方案: (1)滑动窗口法,使用首尾两个指针来确定字符串范围 (2)用数组实现hashmap法 下面对两种解法分别进行探讨。 # 滑动窗口法 对于滑动窗口法需要设置两个指针,在对字符数组进行遍历的过程中每移动一个字符就要使用一次遍历判断一次 ...
分类:
其他好文 时间:
2020-05-02 10:06:51
阅读次数:
48
解题思路:结构体排序 按题目要求排序,再按年龄段和最大输出数目输出 #include <stdio.h> #include <string.h> typedef char Element[9]; typedef struct { Element Name; int age,wealth; } Bil ...
分类:
其他好文 时间:
2020-05-02 00:23:34
阅读次数:
73
题目描述 将一个字符串中的空格替换成"%20" 解题思路 先算出字符串替换后的总长度,在字符串尾部填充任意字符,使得字符串的长度等于替换后的长度。 令P1指向字符串原来末尾位置,P2指向字符串现在末尾位置。P1,P2从后往前遍历,若P1的字符不是空格,则将P1的字符填充到P2,若P1的字符是空格,则 ...
分类:
其他好文 时间:
2020-05-01 10:23:19
阅读次数:
59