Let's begin with set 5,
Q11)Valid Parentheses problem.
Given a string s containing only the characters '(', ')', '{', '}', '[' and ']',
determine if the input string is valid.
An input string is valid if:
Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
Examples :
a)Input: s = "()"
Output: true
Example 2:
b)Input: s = "()[]{}"
Output: true
Example 3:
c)Input: s = "(]"
Output: false
Solution:
var isValid = function(s) {
const obj={
"}":"{",
"]":"[",
")":"(",
},
var stack=[];
for(let i=0;i<s.length;i++){
if(s[i] in obj) {
if(!stack.length || stack[stack.length-1]!==obj[s[i]]) {
return false;
}
else stack.pop();
}else stack.push(s[i]);
}
return !stack.length;
};
Logic: We have to use the stack here to solve our problem.
You may also like these articles:
12)Staircase problem.
You are climbing a staircase. It takes n steps to reach the top.
Each time you can either climb 1 or 2 steps.
In how many distinct ways can you climb to the top?
Examples
a)Input: n = 2
Output: 2
Explanation: There are two ways to climb to the top.
1. 1 step + 1 step
2. 2 steps
Example 2:
b)Input: n = 3
Output: 3
Explanation: There are three ways to climb to the top.
1. 1 step + 1 step + 1 step
2. 1 step + 2 steps
3. 2 steps + 1 step
Solution:
var solution=climbStairs(n) {
// base cases
if(n <= 0) return 0;
if(n == 1) return 1;
if(n == 2) return 2;
int one_step_before = 2;
int two_steps_before = 1;
int all_ways = 0;
for(int i=2; i<n; i++){
all_ways = one_step_before + two_steps_before;
two_steps_before = one_step_before;
one_step_before = all_ways;
}
return all_ways;
}
Logic: Here the pattern is the same as a Fibonacci series.
Comments
Post a Comment