filipecancio / prep-tech-24

4 stars 0 forks source link

Class 2 - Stack and queue #4

Open filipecancio opened 1 month ago

filipecancio commented 1 month ago

Class Leetcode Problems

Homework Leetcode Problems

Problems solved by teachers

https://leetcode.com/problems/number-of-students-unable-to-eat-lunch/submissions/1370615288

Model of stack and stack in python purposed in class

stack.py ```python3 class Stack: def __init__(self): # constructor self.items = [] def push(self, item): self.items.append(item) def pop(self): if not self.is_empty(): return self.items.pop() return None def top(self): if not self.is_empty(): return self.items[-1] return None def is_empty(self): return len(self.items) == 0 ```
queue.py ```python3 class Queue: def __init__(self): self.items = [] def enqueue(self, item): self.items.append(item) def dequeue(self): if not self.is_empty(): return self.items.pop(0) return None def front(self): if not self.is_empty(): return self.items[0] return None def is_empty(self): return len(self.items) == 0 ```

Queue with ✨Linked Lists✨

node.py ```python3 class Node: def __init__(self, data=None): # constructor self.data = data self.next = None ```
queue.py ```python3 class Queue: def __init__(self): # constructor self.front = None self.rear = None def is_empty(self): return self.front == None def enqueue(self, item): new_node = Node(item) if self.rear is None: self.front = self.rear = new_node else: self.rear.next = new_node self.rear = new_node def dequeue(self): if self.is_empty(): return None temp = self.front self.front = temp.next if self.front is None: self.rear = None return temp.data def front(self): if self.is_empty(): return None return self.front.data ```
filipecancio commented 1 month ago

My data structures for solve leetcodes challenges

node.py ```kotlin data class Node(val data: T, var next: Node? = null) ```
stack.py ```kotlin class Stack{ private var top: Node? = null fun push(data: T) { top = Node(data, top) } fun pop(): T? = top?.let{ top = it.next it.data } fun top(): T? = top?.data fun isEmpty(): T? = top == null } ```
queue.py ```kotlin class Queue { private var front: Node? = null private var rear: Node? = null fun isEmpty() = front == null fun enqueue(data: T) { val newNode = Node(data) if (isEmpty()) { front = newNode rear = newNode } else { rear?.next = newNode rear = newNode } } fun dequeue(): T? = front?.let { front = it.next if (front == null) { rear = null } return it.data } fun peek(): T? = front?.data } ```
filipecancio commented 1 month ago

To Solve 1047. Remove All Adjacent Duplicates In String


fun String.toQueue(): Queue<String> {
    val result = Queue<String>()
    this.forEach {result.enqueue(it)}
    return result
}

fun Queue<String>.toString(): String {
    val result = StringBuilder()
    while(!isEmpty()){
        result.append(dequeue())
    }
    return result.toString()
}