摘要:
要按照概率随机选择一个数,可以将数组的值看作一个区间上的长度,比如题目给的例子,当w = [1, 3]时,我们可以假设有一个一维的区间,区间前1/4是第0个数,区间的后3/4是第1个数。 区间总长度4也就是w数组所有数的和。 我们可以在总长度范围(0~4)内随机选择一个数,假设这个数是0~1,那么就 阅读全文
posted @ 2020-11-14 12:46
machine_gun_lin
阅读(145)
评论(0)
推荐(0)
摘要:
题目说了N不会超过15,这就是在暗示我们用DFS。 直接DFS出1~N的排列,然后判断一下是否满足条件。 不过这里要剪枝一下,不需要枚举出所有的排列之后逐个判断,对于某个排列的某一位u,如果已经不满足条件了,即不满足u % i == 0 或者 i % u == 0,那么就无需枚举剩下的位。 这题不加 阅读全文
posted @ 2020-11-14 12:29
machine_gun_lin
阅读(123)
评论(0)
推荐(0)
摘要:
题目说数组长度最长可能到50000,所以如果暴力枚举子数组的起点、终点,再计算数组和,复杂度就是o(n^3),肯定超时。 可以预处理出前缀和,这样只需要枚举起点和终点即可,但时间复杂度依然是O(n^2), 也不行。 这里需要一点奇技淫巧,因为数组只包含有0和1,如果一段子数组含有相同数量的0和1,则 阅读全文
posted @ 2020-11-14 12:14
machine_gun_lin
阅读(97)
评论(0)
推荐(0)
摘要:
这题和LeetCode522. 最长特殊序列 II类似,都是在一个字符串数组中找出最长的一个“特殊序列”。 思路也和522题类似,都是对字符串数组按照长度从大到小排序,枚举的时候也是按照字符串长度从大到小枚举,只不过这题里我们要找到最长的,属于字符串s子序列的字符串。 判断某个字符串是否是另一个字符 阅读全文
posted @ 2020-11-14 11:58
machine_gun_lin
阅读(137)
评论(0)
推荐(0)
摘要:
因为子数组是连续的,所以判断连续的子数组的和时,我们往往开一个前缀和数组预处理出所有数的前缀和,这样能够降低求子数组的和的时间复杂度。 这题需要单独处理k为0的情况,由于数组所有元素都是非负数,所以当k为0时,如果存在两个相邻的数的值都为0,则返回true,否则返回false。 使用前缀和判断是否存 阅读全文
posted @ 2020-11-14 11:38
machine_gun_lin
阅读(115)
评论(0)
推荐(0)
摘要:
可以将字符串数组按照长度从大到小进行排序,然后从前往后遍历,找到第一个特殊序列,这个特殊序列的长度就是答案,如果遍历完数组,都没有找到特殊序列,这返回-1。 特殊序列的判断方法如下: (1)如果这个字符串存在和它相同的字符串(排序后这两个字符串是相邻的),则这个字符串不是特殊序列。 (2)从最开始( 阅读全文
posted @ 2020-11-14 11:25
machine_gun_lin
阅读(141)
评论(0)
推荐(0)
摘要:
根据题意,最长特殊序列就是一个字符串独有的最长子序列,也就是说找到不是另一个字符串子序列的最长子序列。 题目给了两个字符串,如果两个字符串长度不一致,那么长的那个字符串肯定不是短的字符串的子序列,直接返回长的字符串的长度即可。 如果两个字符串长度一致,只有当两个字符串相等时,才不存在最长特殊序列,否 阅读全文
posted @ 2020-11-14 11:04
machine_gun_lin
阅读(79)
评论(0)
推荐(0)
摘要:
题目给出了正确的大写用法的三种情况,直接根据情况判断即可。 首先要判断第一个字母是否是大写字母,如果第一个字母不是大写字母,那么单词后面如果出现小写字母,这个单词就不是正确的大写用法。 如果第一个字母是大写字母,就判断从第二个字母开始到单词结尾的所有字母是否都是小写字母或者都是大写字母,如果都是小写 阅读全文
posted @ 2020-11-14 10:57
machine_gun_lin
阅读(88)
评论(0)
推荐(0)