Sliding window technique - Inside code

แชร์
ฝัง
  • เผยแพร่เมื่อ 29 ก.ย. 2024

ความคิดเห็น • 83

  • @rnniloyiii9082
    @rnniloyiii9082 2 หลายเดือนก่อน +18

    The name should be caterpillar 🙂

  • @mubasakz7651
    @mubasakz7651 7 หลายเดือนก่อน +29

    Great explanation! Someone get this man an award!

  • @pierrehebert9743
    @pierrehebert9743 2 ปีที่แล้ว +1

    When you first introduced the problem, we wanted to pick out the best set of five books, not what the price of the best set was. That means we were looking for argmax rather than max. so the code would be closer to:
    def best_set_for_price(items, k):
    if len(items) max):
    max = offset
    argmax = i + 1
    return argmax
    As a bonus, note how we never need to calculate the initial sum.

    • @insidecode
      @insidecode  2 ปีที่แล้ว

      Thanks for your interesting answer

    • @Daniel_WR_Hart
      @Daniel_WR_Hart 2 ปีที่แล้ว

      mind == blown

  • @bobbrysonn
    @bobbrysonn หลายเดือนก่อน

    Great explanation!

  • @sainithyamsani4062
    @sainithyamsani4062 2 ปีที่แล้ว +1

    keep uploading this kind of videos. your videos are awesome!!!

    • @insidecode
      @insidecode  2 ปีที่แล้ว +1

      Sure! Thanks a lot

  • @rishabhranjan5162
    @rishabhranjan5162 3 หลายเดือนก่อน

    I love these kind of explanations

  • @odell4709
    @odell4709 9 หลายเดือนก่อน

    Made things very clear, thank you so much

  • @Pretty-Skie
    @Pretty-Skie 5 หลายเดือนก่อน

    thankyou sir, great explanation☺

  • @prathagautam9872
    @prathagautam9872 5 หลายเดือนก่อน

    To the point!

  • @biggn7441
    @biggn7441 2 ปีที่แล้ว +21

    Your videos are impressive! Can you do all of the major technical interview patterns and the intuition behind them? Thanks 💯

  • @badermuteb4552
    @badermuteb4552 2 ปีที่แล้ว +3

    nicely done. the best tutorial ever. please continue making new vide like this,
    here is my solution: is it correct?
    def mnv(s,k):
    v = "aeoiu"
    ms =0
    for i in range(k):
    if s[i] in v:
    ms +=1
    max_substring = ms
    for i in range(len(s) - k):
    if s[i] in v:
    ms -= 1
    if s[i+k] in v:
    ms += 1
    max_substring = max(max_substring, ms)
    return max_substring
    how would you solve it?????

  • @probabilitycodingisfunis1
    @probabilitycodingisfunis1 2 ปีที่แล้ว +8

    Amazing videos, content is explained so well with impressive animations!

  • @sameerhasan7376
    @sameerhasan7376 ปีที่แล้ว +6

    Beautiful explanation! Thank you! Was struggling with this for quite some time.

  • @Syuzaki1301
    @Syuzaki1301 6 หลายเดือนก่อน

    tried this in JS. Used some helper functions so I don't dilute the main function:
    // HELPER FUNCTIONS
    function isVowel(str) {
    let vowels = "aeiou";
    return vowels.includes(str);
    }
    function countVowels(str) {
    let count = 0;
    for (let i = 0; i < str.length; i++) {
    if (isVowel(str[i])) count += 1;
    }
    return count;
    }
    // MAIN FUNCTION
    function maxVowels(s, k) {
    let total = countVowels(s.slice(0, 5));
    let maxVowels = total;
    for (let i = 0; i < s.length - k; i++) {
    if (isVowel(s[i])) total -= 1;
    if (isVowel(s[i + k])) total += 1;
    if (maxVowels < total) maxVowels = total;
    }
    return maxVowels;
    }

  • @megamehdi89
    @megamehdi89 2 ปีที่แล้ว +6

    Please continue making videos. I love them ❤️

    • @insidecode
      @insidecode  2 ปีที่แล้ว

      Sure! thanks a lot

  • @whiz-code
    @whiz-code 2 หลายเดือนก่อน

    I have come up with a solution but it seems like brute force, and if so, someone help me optimize it:
    static int maxVowelsNum(String s, int k) {
    var list = List.of('a', 'e', 'i', 'o', 'u');
    var p1 = 0;
    var p2 = k + 1;
    var max = 0;
    var count = 0;
    while (p2 < s.length()) {
    var chars = s.substring(p1, p2);
    for (var ch : chars.toCharArray()) {
    if (list.contains(ch)) {
    count++;
    }
    }
    max = Math.max(max, count);
    p1++;
    p2++;
    count = 0;
    }
    return max;
    }
    Thank you.

  • @SanjuKumar-hk8yy
    @SanjuKumar-hk8yy ปีที่แล้ว +1

    I like your videos because your content with animation and your hard work, love you dude❤️. But I am not gay.

  • @momal51
    @momal51 11 วันที่ผ่านมา

    Very nice explanation, thanks man !

  • @ESLRepeat
    @ESLRepeat 2 หลายเดือนก่อน +1

    thanks man, you explained the thing really well. I had fun taking the class

  • @algorithmdatastructures9244
    @algorithmdatastructures9244 11 หลายเดือนก่อน +2

    Best video on this topic all over youtube. 😍

  • @shaheerzaman620
    @shaheerzaman620 2 ปีที่แล้ว +7

    Nice video! Here is the solution for vowels
    # max number of vowels in a string of size k
    def max_vowels(s, k):
    vowels = ("a", "e", "i", "o", "u")
    maxvowels = 0
    for ch in s[:k]:
    if ch in vowels:
    maxvowels += 1
    total = maxvowels
    for i in range(len(s) - k):
    if s[i] in vowels:
    total -= 1
    if s[i + k] in vowels:
    total += 1
    maxvowels = max(maxvowels, total)
    return maxvowels

    • @insidecode
      @insidecode  2 ปีที่แล้ว

      perfect! good job

    • @DAOXINNo15
      @DAOXINNo15 19 วันที่ผ่านมา

      Would you say in this optimal way to be O(n) then because of how the two if statements are linear and all right?

  • @benhassineyoussef738
    @benhassineyoussef738 หลายเดือนก่อน

    "the size doesnt have an impact"

  • @kaushik.aryan04
    @kaushik.aryan04 2 ปีที่แล้ว +1

    please make more videos like this on recursion medium hard questions

  • @methylie
    @methylie ปีที่แล้ว +1

    Your lectures are good 😊.keep posting vedios

  • @ramseykarr6870
    @ramseykarr6870 24 วันที่ผ่านมา

    Best explanation ever!

  • @rodrigoelias1987
    @rodrigoelias1987 4 หลายเดือนก่อน

    here is a node solution for the exercise at the end of the video:
    import { strictEqual } from "assert";
    const vowels = new Map([
    ["a", "a"],
    ["e", "e"],
    ["i", "i"],
    ["o", "o"],
    ["u", "u"],
    ]);
    const isVowel = (v: string) => vowels.has(v);
    const countVowels = (string: string, span = 5) => {
    let vowelsCount = 0;
    let maxVowels = 0;
    for (let i = 0; i < string.length; i++) {
    if (i - span - 1 > -1) {
    if (isVowel(string[i - span - 1])) {
    vowelsCount--;
    }
    }
    if (isVowel(string[i])) {
    vowelsCount++;
    }
    if (vowelsCount > maxVowels) {
    maxVowels = vowelsCount;
    }
    }
    return maxVowels;
    };
    const input = "bacacbefaobeacfe";
    strictEqual(
    countVowels(input),
    4,
    "The expected ammount of vowels was 4, got " + countVowels(input)
    );

  • @codelinx
    @codelinx 11 หลายเดือนก่อน +1

    Great channel. Great illustrations and examples....🙋‍♂️

  • @iezioaudi22
    @iezioaudi22 7 หลายเดือนก่อน +1

    this was the best explanation I have seen!
    THANK YOUU!

  • @tankstechtutorials5721
    @tankstechtutorials5721 6 หลายเดือนก่อน

    great video. Had fun brushing up on this algorithm.
    function maxNumOfVowels(s, k) {
    let maxNum = 0;
    function isVowel(c) {
    return /[aeiou]/.test(c) ? 1 : 0;
    }
    let leftBound = 0;
    let rightBound = k-1;
    let firstSlice = s.substring(leftBound, k);
    for (let index = 0; index < firstSlice.length; index++) {
    const element = firstSlice[index];
    maxNum += isVowel(element);
    }
    let currentCount = maxNum;
    while (rightBound < s.length - 1) {
    leftBound++;
    rightBound++;
    if(isVowel(s[leftBound-1])) {
    currentCount -= 1;
    }
    if (isVowel(s[rightBound])) {
    currentCount += 1;
    }
    maxNum = Math.max(currentCount, maxNum);
    }
    return maxNum;
    }

  • @chaos.n.dissonance
    @chaos.n.dissonance 3 หลายเดือนก่อน

    Thank you. I've been struggling to wrap my mind around ChatGPT's explanation of sliding window technique for a few days now, this is so much simpler.
    def count_vowels_efficientcode(word:str, k:int) -> int:
    VOWELS = set('aeiou')
    max_vowels:int = 0
    n:int = len(word)
    if n

  • @chanukachathurangawk
    @chanukachathurangawk 2 หลายเดือนก่อน

    Thanks a lot.

  • @nullptr.
    @nullptr. 2 หลายเดือนก่อน

    Thanks

  • @preminfi4887
    @preminfi4887 หลายเดือนก่อน

    Great explanation! Awesome visualisation, it is easy to understand the problem and the solution.

  • @subee128
    @subee128 4 หลายเดือนก่อน

    thanks

  • @paulsingh11
    @paulsingh11 6 หลายเดือนก่อน

    Sounds like the key word to use the Sliding Window is "contiguous" when dealing with an Array?

  • @sarthaksharma9322
    @sarthaksharma9322 2 หลายเดือนก่อน

    Beautiful visualisation! and explanation of time complexities and algorithm, love the video so much!!❤

  • @Samad_27
    @Samad_27 2 ปีที่แล้ว +7

    Plz make more videos no one can beat your level Absolutely Brilliant

  • @ericlongteaches
    @ericlongteaches หลายเดือนก่อน

    5:03 I have no clue what you just said here

  • @ysmerde2933
    @ysmerde2933 ปีที่แล้ว

    You know you are gonna learn something when the English speaker has an foreign accent ty for the tuto dude you insane

  • @value_investing_indonesia
    @value_investing_indonesia 2 ปีที่แล้ว +1

    Absolute genius, please continue making videoss

  • @probabilitycodingisfunis1
    @probabilitycodingisfunis1 2 ปีที่แล้ว

    How do you make these animations?

    • @insidecode
      @insidecode  2 ปีที่แล้ว +1

      I use PowerPoint

  • @rodrigoelias1987
    @rodrigoelias1987 4 หลายเดือนก่อน

    Nice content, dropping a like right now

  • @TechDoctorMalayalam
    @TechDoctorMalayalam 6 หลายเดือนก่อน

    Great explanation and illustration

  • @cecitorresmx
    @cecitorresmx 6 หลายเดือนก่อน

    Your video help me a lot! Thank you

  • @callmeitsh
    @callmeitsh 4 หลายเดือนก่อน

    Nice man 👍
    Thank u bro ♥️

  • @peacepeace9462
    @peacepeace9462 6 หลายเดือนก่อน

    i dont understand why the brute force for best_total_price has the "for i in range(len(prices)-k+1)" instead of "for i in range(len(prices)-k)". Could anyone explain this?

    • @tapin130505
      @tapin130505 6 หลายเดือนก่อน

      because the last element should be included

    • @peacepeace9462
      @peacepeace9462 6 หลายเดือนก่อน

      I figured out why. len(prices)-k+1 is the starting index of the last combination of the books. The calculations of brute force and sliding window have different index ranges.

  • @R_SinghRajput
    @R_SinghRajput 3 หลายเดือนก่อน

    Crazy explanation 🔥😎

  • @shreyaskulkarni4805
    @shreyaskulkarni4805 8 หลายเดือนก่อน

    Impressive Explanation ❤️

  • @GurtDovletov
    @GurtDovletov 7 หลายเดือนก่อน

    Very good explanation woow

  • @hammadhassan9014
    @hammadhassan9014 4 หลายเดือนก่อน

    you are genius

  • @noname_2108
    @noname_2108 ปีที่แล้ว

    very helpful, thanks!

  • @DiogoSilva-xx8nz
    @DiogoSilva-xx8nz 5 หลายเดือนก่อน

    awesome channel

  • @kurdi_x5842
    @kurdi_x5842 2 ปีที่แล้ว

    thaankyou it is so clear

  • @arsh2544
    @arsh2544 4 หลายเดือนก่อน

    awesome video!

  • @____r72
    @____r72 2 ปีที่แล้ว

    this channel is so top

  • @aahringer
    @aahringer ปีที่แล้ว

    Well done, thank you for sharing!

  • @charann18
    @charann18 2 ปีที่แล้ว

    Just awesome!!!!

  • @averrows
    @averrows 2 ปีที่แล้ว

    great video! what software did you use to create this video?

    • @insidecode
      @insidecode  2 ปีที่แล้ว +2

      Thanks! I used PowerPoint

  • @Millicx
    @Millicx 2 ปีที่แล้ว

    Priceless video

  • @Fabreg01
    @Fabreg01 2 ปีที่แล้ว +1

    Great video!!. This technique can also be leveraged in rolling hash calculations.
    Solution to the sliding window to calculate max vowels count in a string
    class Solution:
    def maxVowels(self, s: str, k: int) -> int:
    if len(s) < k:
    return 0
    total = 0
    lookUpv = {'a':True, 'e':True, 'i':True, 'o':True, 'u':True}
    for c in s[:k]:
    if c in lookUpv:
    total += 1
    maxTotal = total
    for i in range(len(s)-k):
    char_to_add = s[i+k]
    if char_to_add in lookUpv:
    total += 1
    char_to_remove = s[i]
    if char_to_remove in lookUpv:
    total -= 1
    maxTotal = max(maxTotal,total)
    return maxTotal

    • @insidecode
      @insidecode  2 ปีที่แล้ว +1

      Yes, I'm planning a video on Rabin-Karp algorithm, which uses rolling hash

    • @insidecode
      @insidecode  2 ปีที่แล้ว +1

      Hey, the video on Rabin-Karp is out

    • @Fabreg01
      @Fabreg01 2 ปีที่แล้ว

      @@insidecode Great!!.Thanks

  • @biloliddinfarkhodov3956
    @biloliddinfarkhodov3956 8 หลายเดือนก่อน

    This is the best explanation I have ever watched. Thank you!