This is an excellent description of the mood that we are going through right now. It does feel inevitable that AI is going to be part of our life, whether we like or not.
I'm a backend engineer and my professional interests lie in backend development, distributed systems, cloud computing, and building data-intensive applications. I enjoy tackling complex technical challenges and designing scalable solutions that can handle large amounts of data efficiently.
Location: UK
Remote: Prefer Remote and Hybrid
Willing to relocate: Yes
Technologies: Backend, data pipelines, Python, Java, Scala, some Typescript, Kubernetes, Kafka, Postgres, GCP, AWS
Sometimes, it's a way to elegantly solve some problems. Imagine you have a binary tree and you need to find it's depth. The answer is the maximum depth of its left and right subtree plus one. This easily translates into a recursive code.
It's true that it's rarely used in production quality code, but nonetheless it's sometimes useful and you should have a good command of writing recursive code.
This pretty standard interview question. You should keep track of the current minimum when you do a push:
push 1:
[(v=1,m=1)]
push -1:
[(v=1, m=1), (v=-1, m=-1)]
push 3:
[(v=1, m=1), (v=-1, m=-1), (v=3, m=-1)]
get_min:
[(v=1, m=1), (v=-1, m=-1), (v=3, m=-1)]
returns m=-1
pop:
[(v=1, m=1), (v=-1, m=-1)]
returns v=3
get_min:
returns -1
Came here to say this, as far as LC questions go, this one is pretty straight forward. OP, the way you come up with a solution like this is practice and more practice, the same way you can solve an equation you never seen before, because you have a set of tools (patterns, "tricks", knowledge, ...) that allows you to come up with a solution. Keep practicing and you will see the progress.
Yes. Of course. But what do you do when the top of the stack IS the min? Your new min should change, but you won't have the information to update to the second min unless you do the trick in the article.