Integer to Roman - Leetcode 12 - Python

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

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

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

    Great explanation!
    I don't even go through the discuss section if NeetCode's video is available.

  • @mengjiasings1278
    @mengjiasings1278 3 ปีที่แล้ว +20

    Thanks for your work! I am trying to develop a habit of watching your video everyday before bed.

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

      after bed will give you better result

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

    Best explanations out there. Your videos are so succinct and well explained that I can understand any problem in about ten minutes! Got a TH-cam account just so I could subscribe and support the channel as a thank you! So thank you!!

  • @gary-williams
    @gary-williams 6 หลายเดือนก่อน +2

    The division and modulus can be replaced with subtraction:
    for sym, val in reversed(symList):
    while num >= val:
    res += sym
    num -= val
    This won't perform any different (although there will be 3x as many string concatenations in the worst case (e.g., num=3333) ), but it's conceptually slightly simpler.

  • @andresbonelli
    @andresbonelli 4 หลายเดือนก่อน +2

    Cool explanation!
    Another possible solution:
    def intToRoman(self, num: int) -> str:
    symList = [...] # (Your symbols list)

    # Roman zero does not exist
    if num

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

      it works fine bro

  • @self-learning1824
    @self-learning1824 2 ปีที่แล้ว +4

    Thanks for the great explaination! Just a quick ques: Why did you use list instead if hashmap? I have an idea still wanted some clarification if what I thinking is right.

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

      Because you need to iterate in order. A dictionary key-value pair has no order.

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

      @@jpkeys6000they do in python …

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

    Best in youtube. To the point, short but complete 👍

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

    As of Python 3.7 hashmap (dict) preserves insertion order so you don't need to use a list.

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

    how to handle 400 , the output is "CCCC" but expected is "CD". I think To handle the case of 400, we need to add an additional condition to check if the num is equal to the current val. If that condition is true, we can directly append the symbol and subtract the value from num. This will ensure the code correctly handles cases requiring subtractive notation.

    • @animeshsingh4290
      @animeshsingh4290 10 หลายเดือนก่อน +1

      It's already in the list of our conditions

  • @LordKing13
    @LordKing13 3 ปีที่แล้ว +5

    like+subscribed! thx for the help! I m learning a lot with your channel bro!

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

    Your explanations are excellent! After watching many of your videos, one suggestions I would make is better variable naming for clarity. Your variable names tend too be too concise and generic/unclear. In this video for example, "sym, val" would be clearer as "roman, decimal". I see you also use "res" a lot in many of your videos. Sometimes, I have to re-read the code a few times to keep track of what the variables mean. Other than that, awesome, and thank you so much for helping us!

  • @rpgiri2002
    @rpgiri2002 2 วันที่ผ่านมา

    Thanks dude. Your simple explanation is superb.

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

    You explained it like a peice of a cake

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

    Simple and brilliant.

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

    Woah! That was an outstanding explanation. Extremely clear and concise. Thanks a ton!

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

    Thank you a lot, from France !

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

    u made it so easy man
    thanks

  • @user-lt3oi7bx9p
    @user-lt3oi7bx9p 9 วันที่ผ่านมา

    Stop the iteration if num==0:
    if num==0:
    return res

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

    The only thing I can say is: Thank you, thank you, thank you!!!

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

    Is it not mandatory to give an (!= 0) in the if statement?

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

    Hermosa solución. Simple y efectiva.

  • @DatascienceConcepts
    @DatascienceConcepts 3 ปีที่แล้ว

    Such a clear explanation!

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

    Can we use LinkedHashMap and iterate through it? Complexity to retrieve an element would be reduced

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

      Yes you can and as of Python 3.7 the hashmap preserves insertion order.

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

    I have a different solución, but tours is good to me too.

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

    Good video sir.

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

    ok how do you run it with no main?

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

    Good Explanation

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

    U a Roman God

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

    Here's how I did it if anyone wants an alternate solution:
    class Solution(object):
    def intToRoman(self, num):
    integers=[1000,900,500,400,100,90,50,40,10,9,5,4,1]
    roman=['M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I']
    rom_val=[]

    while(num!=0):
    for i in range(len(integers)):
    while(num>=integers[i]):
    rom_val.append(roman[i])
    num=num-integers[i]
    return ''.join(rom_val)
    or alternatively:
    class Solution(object):
    def intToRoman(self, num):
    integers=[1000,900,500,400,100,90,50,40,10,9,5,4,1]
    roman=['M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I']
    rom_val=[]
    i=0
    while(num!=0):
    for i in range(len(integers)):
    count=num//integers[i]
    rom_val.append(roman[i]*count)
    num=num%integers[i]
    return ''.join(rom_val)

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

    What about the number 1000 , it shows CDCDXCXCXX instead of M which is already in the array

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

      1000 / 1000 gives count 1. which then multiplied with M gives you M alone. Then num becomes 0 due to mod operation. loop breaks

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

    I'm pretty sure that line 10 of your code "if num // val:" is unnecessary. In fact, the following few lines don't need to be nested into any conditionals at all; The line is redundant with the following line, since "count" is only going to be altered in cases where "num" is larger than "val" anyway. If you take out the conditional, the code still passes all of LeetCode's tests and accepts the submission as correct.
    That said, I'm still pretty new to this, so maybe there's another reason here that I'm missing. Would adding that conditional allow the program to run faster, as the processor wouldn't need to run through the following lines for "value" values that aren't going to change the result? LeetCode doesn't give noticeably different CPU usages or speeds for the two different versions of the code, but I can imagine that maybe this is something that would only be an issue in longer and more complex software.

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

    thanks for your help for beginners like me 😂

  • @Technical-zero
    @Technical-zero 3 หลายเดือนก่อน

    thank you for your help😀

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

    absolutely amazing

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

    such an elegant solution

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

    You could have avoided the complexity of reversing the list , simply making the list reverse from the start

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

    for 1994 it's giving wrong answer

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

      No, it gives the right answer i.e "MCMXCIV". However I did in Swift, but the concept is same

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

      Yes, for 1994, it's not working

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

      it works perfectly , just now submitted it with the same logic

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

    Awesome!!

  • @איתיבןחיים-ט6מ
    @איתיבןחיים-ט6מ 2 ปีที่แล้ว

    What about the number 8? In roman numerals its VIII, but if I'm not mistaken according to this code it'd be IVIV

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

      Remember that we iterate through the table in reverse order. 8 would first be divided by 5, which would be divisible once (integer division), so count would be 1 for 5 and we would add 'V' and then mod by 5 to get 3, which would then be divided by 1, producing a count of 3 and adding 'I' 3 times

    • @איתיבןחיים-ט6מ
      @איתיבןחיים-ט6מ 2 ปีที่แล้ว

      @@OGRfilms oh got it, thank you

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

    thank you so much

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

    how wiukd anyone know that ,he has to make a list for this problem?

    • @dingus2332
      @dingus2332 3 หลายเดือนก่อน +1

      From Roman to Integer , it was pretty clear , only some cases are not considered , and those could be added here

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

    This is more math than programming

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

    🎉

  • @JOHNSMITH-ve3rq
    @JOHNSMITH-ve3rq ปีที่แล้ว

    Why nest these solutions inside a class? Why not just make the scope the py script?

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

      Because u have to submit this code in leetcode by nesting it inside a class. That's how leetcode works

  • @HimanshuKumar_24
    @HimanshuKumar_24 5 หลายเดือนก่อน +1

    Can someone please type that list of lists for me, I'll Gpay 20 Rs.

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

    Best 👍

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

    Am i the only one in 30s and still struggling with such problems :(

  • @Yo-sb9st
    @Yo-sb9st ปีที่แล้ว

    This one was hard

  • @JashSingh-bv5ge
    @JashSingh-bv5ge 8 หลายเดือนก่อน

    im too dumb to code

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

    LOL

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

    sexjhvhj

  • @karthick...
    @karthick... 9 หลายเดือนก่อน +4

    I hate python bcz i am C++ coder