LeetCodeHot100题
文章平均质量分 66
bullshitter
这个作者很懒,什么都没留下…
展开
-
Leetcode Hot100系列之滑动窗口
1. 438. 找到字符串中所有字母异位词1.1 思路求字符串的子串问题—考虑滑动窗口要求找到字符串p的异构词,所以窗口的大小必须与字符串p的长度一样。方法一: 在每个窗口判断字符子串是否与字符串p相同即可。方法二:在方法一的基础上,不用统计滑动窗口和字符串每种字母的数量,而是使用数组统计滑动窗口和字符串p中每种字母的数量差;并引入变量differ来记录当前窗口与字符串p中数量不同的字母的种类,并在滑动窗口的过程中维护它,如果differ等于0,就表明滑动窗口中每种类型的字母与字符串p的字母类型原创 2021-12-05 21:01:09 · 149 阅读 · 0 评论 -
Leetcode Hot100系列136.只出现一次的数字
1. 136. 只出现一次的数字1.1 思路其余元素均出现两次,只有一个元素出现一次,首先想到的就是使用 HashMap,统计每个元素出现的次数,然后找到value值为1的key值即可。但题目要求不使用额外空间来实现,所以Java集合都不能使用,这时就要想到 异或运算二进制按位XOR运算:java中的位运算符号^是将两个数按二进制的形式进行异或运算,然后再转换为十进制。异或运算有如下性质:一个数和0做XOR运算等于本身:a⊕0 = a一个数和其本身做XOR运算等于0:a⊕a = 0XOR运原创 2021-12-02 20:32:41 · 597 阅读 · 0 评论 -
Leetcode Hot100系列128. 最长连续序列
128. 最长连续序列思路题目要设计时间复杂度为O(n)的算法解决此问题。考虑枚举数组中的每个数xxx,考虑其为起点,不断尝试匹配x+1,x+2,...x+1,x+2,...x+1,x+2,...,是否存在,假设最长匹配到了x+yx+yx+y,那么其长度为y+1y+1y+1。匹配的过程,暴力的方法是O(n)O(n)O(n)遍历数组去看它后面连接的数是否存在,更高效的方法是用一个哈希表存储数组中的数,这样查看一个数是否存在即能优化至O(1)O(1)O(1)的时间复杂度。但是这样算法的时间复杂度最坏情况原创 2021-11-30 19:50:58 · 192 阅读 · 0 评论 -
Leetcode Hot100系列283移动零
leetcode Hot100-283.移动零原创 2021-11-30 14:40:52 · 53 阅读 · 0 评论