Skip to content

Leetcode: Common MAANG Coding QNA

Praveen Kumar Anwla edited this page Feb 14, 2024 · 1 revision

Q1. Write a function that takes an array of integers heights, where each element represents the height of a bar at position i. The function should return an integer representing the total amount of rainwater that can be trapped between the bars.

Ans:

def trap_rain_water_prob(heights):
    
    #Basecase
    if len(heights) <= 2:
        return 0
    
    # Find left and right max values
    left_max_val = [0] * len(heights)
    right_max_val = [0] * len(heights)
    
    for i in range(1, len(heights)):  # Starting from 1 coz at index 0, left_max_val=0 is already initialized
        left_max_val[i] = max(left_max_val[i-1], heights[i-1])
        
    for i in range(len(heights)-2, -1, -1):  # start from right side of heights array
        right_max_val[i] = max(right_max_val[i+1], heights[i+1])
    
    # Find the traped water
    traped_water = 0
    for i in range(1, len(heights)-1):
        if min(left_max_val[i], right_max_val[i]) > heights[i]:
            traped_water += min(left_max_val[i], right_max_val[i])-heights[i]
    return traped_water

        
print(trap_rain_water_prob([1, 0, 2, 1, 3, 1, 2, 0, 3]))  # Output: 8

Q2. Implement a function that takes a list of integers nums as input and reverses the order of its elements in-place. The function should modify the original list without using additional memory.

Ans:

def reverse_data(nums):
    
    start_idx, end_idx = 0, len(nums)-1
    
    while end_idx > start_idx:
        nums[start_idx], nums[end_idx] = nums[end_idx], nums[start_idx]
        
        start_idx += 1
        end_idx -= 1
    return nums

nums = [1, 2, 3, 4, 5]

print(reverse_data(nums))

Q3. Write a function to check whether a given string is palindrome or not.

Ans:

def reverse_data(data):
    
    data = list(data)
    
    start_idx, end_idx = 0, len(data)-1
    
    while end_idx > start_idx:
        data[start_idx], data[end_idx] = data[end_idx], data[start_idx]
        
        start_idx += 1
        end_idx -= 1
    
    return ''.join(data)

def palindrome_check(data):
    
    reversed_data = reverse_data(data)
    
    if data == reversed_data:
        return True
    
    return False
        
print(palindrome_check('madam'))

Q4. Write a function to check whether 2 strings are anagram or not.

Ans:

def anagram_check(string1, string2):
    
    if len(string1) != len(string2):
        return False
    string1 = sorted(string1)
    string2 = sorted(string2)
    
    print("string1 :", string1, "string2 :", string2)
    
    if string1 != string2:
        return False
    
    return True

s1 = 'listen'
s2 = 'silent'

print(anagram_check(s1, s2))

Q5. Reverse an integer.

Ans:

def reverse_int(n):
    
    reversed_int = 0
    
    while n > 0:
        remainder = n % 10
        reversed_int = reversed_int*10 + remainder
        n = n // 10
    return reversed_int

print(reverse_int(12345678))
Clone this wiki locally