LeetCode 第992题 Subarrays with K Different Integers【滑动窗口】(Java)

原题地址:https://leetcode.com/problems/subarrays-with-k-different-integers/

要求如下:

给定一个正整数的数组,寻找(连续,但是元素不一定不重复的)子数组,满足条件就是里面不同的数字的数量,正好是K个。
例如[1,2,3,1,2]有三个不同的数字,1,2,3。
要求返回这样的子数组的数量。

例 1:

输入: A = [1,2,1,2,3], K = 2
输出: 7
正好有两个数字的子数组包括 [1,2], [2,1], [1,2], [2,3], [1,2,1], [2,1,2], [1,2,1,2],7个。

例 2:

输入: A = [1,2,1,3,4], K = 3
输出: 3
正好三个数字的子数组包括[1,2,1,3], [2,1,3], [1,3,4]。

注意:

    1 <= A.length <= 20000
    1 <= A[i] <= A.length
    1 <= K <= A.length

继续阅读

LeetCode 第567题 Permutation in String【滑动窗口】(Java)

原题地址:https://leetcode.com/problems/permutation-in-string/

要求

给定两个字符串s1和s2,写一个函数,如果s2包含了s1的排列组合(permutation,就是字符长度跟s1一样,字符频率一样,但是字符出现的位置一样),则返回true。换句话说,第一个字符串的排列组合,是第二个字符串的子串。

例 1:

    输入为: s1 = “ab” s2 = “eidbaooo”

    输出为: True

例 2:

    输入为: s1= “ab” s2 = “eidboaoo”

    输出为: False

注意:

    输入仅包含小写字母,字符串长度范围是[1,10000]。

继续阅读

LeetCode 第438题 Find All Anagrams in a String【滑动窗口】(Java)

原题地址: https://leetcode.com/problems/find-all-anagrams-in-a-string/

要求

给定一个字符传s和一个非空字符串p,找到所有的p的变位词(anagrams,字符都一样,字符出现的位置不同)在s中的位置。仅包含小写英文单词,而且s和p的长度都不会超过20100。结果顺序不重要。

例 1:

输入: s: “cbaebabacd” p: “abc”

输出: [0, 6]

解释:

    0位置的子串为”cba”,是”abc”的变位词。
    6位置的子串为”bac”,是”abc”的变位词。

例 2:

输入: s: “abab” p: “ab”

输出: [0, 1, 2]

解释:

    0位置的子串为”ab”,是”ab”的变位词。
1位置的子串为”ba”,是”ab”的变位词。
2位置的子串为”ab”,是”ab”的变位词。

继续阅读

LeetCode 第424题 Longest Repeating Character Replacement【滑动窗口】(Java)

原题地址:https://leetcode.com/problems/longest-repeating-character-replacement/

要求:

给定字符串只包含大写英文字母,你可以替换任意一个字母,替换最多k次。找到这样操作后,最长的全部都是重复字符的子串长度来。

注意: 字符和k的长度都不到104。

例 1:

输入:

    s = “ABAB”, k = 2

输出:

    4

   把两个A换成B,或者反之

例 2:

输入:

    s = “AABABBA”, k = 1

输出:

    4

    把中间的A换成B,那么字符串变成”AABBBBA”,其中”BBBB”长度为4。

继续阅读

LeetCode 第30题 Substring with Concatenation of All Words【滑动窗口】(Java)

原题地址为:https://leetcode.com/problems/substring-with-concatenation-of-all-words/

要求

给定字符串s,和有一个单词列表words,每个词长度相等。在s中寻找,包含全部词,且每个词只出现一次,没有任何多余其他字符的子串。

例 1:

输入:

     s = “barfoothefoobarman”,

    words = [“foo”,”bar”]

输出:  [0,9]

    0,9分别对应了”barfoor”和”foobar” 

例 2:

输入:

    s = “wordgoodgoodgoodbestword”,

    words = [“word”,”good”,”best”,”word”]

输出: []

继续阅读

LeetCode 第3题 Longest Substring Without Repeating Characters【滑动窗口】(Java)

原题地址: https://leetcode.com/problems/longest-substring-without-repeating-characters/

要求如下:

给定一个字符串,找出最长的没有重复字符的子串。

例 1:

    输入为: “abcabcbb”

    输出位: 3

    答案是”abc”,长度为3。

例 2:

    输入为: “bbbbb”

    输出位: 1

    答案是”b”,长度为1。

例 3:

    输入为: “pwwkew”

    输出位: 3

    答案是”wke”,长度为3。

继续阅读

Leetcode 第2题 Add Two Numbers题解 (Java)

原题地址:https://leetcode.com/problems/add-two-numbers/

难度:中级

题目:

这题的基本意思是,给你两个非空的链表表示了两个正整数。每一个节点表示一位数字,按照反序(个位数在最前面)。把两个数字加起来,返回一个代表和的链表。

你可以假设这两个数字都不带前导0,除非0这个数字本身。

示例为:

输入:(2 -> 4 -> 3) + (5 -> 6 ->4)

输出:7 ->0 -> 8

解释:342 + 465 = 807

继续阅读

Leetcode第1题 Two Sum题解(Java)

前言

我是一个非科班出身的程序员,所以伴随着职业生涯中的很多点,我们都有对因为出身而知识匮乏的恐惧。所以,在我进入职业生涯没有多久,我就买齐了大学计算机科学的教材硬看。所以,虽然是非科班出身,算法和数据结构对我来说并不陌生。那时候,我对TCP/IP详解,对编译原理,对信息检索等大部头也有深刻的兴趣。

继续阅读