a blog about nothing
LeetCode 844. Backspace String Compare
Here is my solution Backspace String Compare problem.
/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var backspaceCompare = function(s, t) {
s = processString(s);
t = processString(t);
//console.log({s, t})
return s===t;
};
let processString = function(s) {
const a = [];
let skip = 0;
for (let i = s.length-1; i >= 0; i--) {
if (s[i] === '#') {
skip++;
} else if (skip > 0) {
skip--;
} else {
a.push(s[i]);
}
//console.log({a, skip, i})
}
let re = '';
//console.log({ a: a.length})
while (a.length > 0) {
re += a.pop();
//console.log({i, re, a: a.length})
}
return re;
}
Results:
Runtime: 80 ms, faster than 73.76% of JavaScript online submissions for Backspace String Compare.
…Leetcode 690: Employee Importance Solution
Here is another LeetCode solution for Employee Importance Problem.
/**
* Definition for Employee.
* class Employee {
* public $id = null;
* public $importance = null;
* public $subordinates = array();
* function __construct($id, $importance, $subordinates) {
* $this->id = $id;
* $this->importance = $importance;
* $this->subordinates = $subordinates;
* }
* }
*/
class Solution {
/**
* @param Employee[] $employees
* @param Integer $id
* @return Integer
*/
function getImportance($employees, $id) {
if (empty($employees)) return 0;
$emap = [];
foreach ($employees as $e) {
$emap[$e->id] = $e;
}
return $this->recurse($emap, $id);
}
function recurse($emap, $id) {
$e = $emap[$id];
$ans = $e->importance;
foreach ($e->subordinates as $sub) {
$ans += $this->recurse($emap, $sub);
}
return $ans;
}
}
LeetCode 1249. Minimum Remove to Make Valid Parentheses
Here is my solution to this problem:
/**
* @param {string} s
* @return {string}
*/
var minRemoveToMakeValid = function(s) {
const stack = [];
const charArray = s.split("");
const rightBracketsToRemove = [];
for (let i=0;i<charArray.length;i++) {
if (charArray[i] === '(') {
stack.push(i);
} else if (charArray[i] === ')' && stack.length > 0) {
stack.pop();
} else if (charArray[i] === ')') {
charArray[i] = '';
}
}
while (stack.length > 0) {
const i = stack.pop();
charArray[i] = '';
}
return charArray.join('');
};
Leetcode 13: Roman to Integers
Here is my solution to this problem in PHP:
private $v = ['M' = > 1000, 'D' = > 500, 'C' = > 100, 'L' = > 50, 'X' = > 10, 'V' = > 5, 'I' = > 1];
/**
* @param String $s
* @return Integer
*/
function romanToInt($s) {
$n = 0;
$last = '';
for ($i=0;$i < strlen ($s ); $i++) {
$n += $this- >v[$s[$i]];
if (($s[$i] == 'V' || $s[$i] == 'X') && $last == 'I') {
$n = $n - 2;
} elseif (($s[$i] == 'L' || $s[$i] == 'C') && $last == 'X') {
$n -= 20;
} elseif (($s[$i] == 'D' || $s[$i] == 'M') && $last == 'C') {
$n -= 200;
}
$last = $s[$i];
}
return $n;
}
}
Troubleshooting Kubernetes Ingress
Setting up Ingress is an easy process but when it doesn’t work it gets really painful. First, make sure you have Ingress Controller setup correctly. This is in addition to Ingress resource and should be automatically setup by your cloud provider. When I was trying to setup a Kubernetes cluster on IBM Cloud, I ran into a lot of issues. It seems due to my permissions level something went wrong during provisioning of Kubernetes and Ingress Controller was not setup correctly. I went through a lot of steps including recreating alb , ingress resources, etc. The final fix was to login to IBM Cloud as superuser to change Access Policies for the cluster. Once did that, everything just worked magically.
HackerRank: New Year Chaos
Here is my solution to New Years Chaos problem from HackerRank. The first solution had a bug:
<pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-js" data-lang="js">function minimumBribes (q ) {
let bribes = 0 ;
for (let i = 0 ;i <q .length - 2 ;i++ ) {
if (q [i ] - (i + 1 ) > 2 ) {
console .log ( 'Too chaotic' );
return ;
}
// compare index to element, works great except when a smaller element is pushed way back
if (q [i ] - (i + 1 ) > 0 ) {
bribes += q [i ] - (i + 1 );
}
}
console .log (bribes );
}
Second solution had O(n^2) complexity:
…LeetCode 200: Number of Islands
I had to watch some YouTube videos for the solution to this problem. I am not sure if this is the best solution though, one day I will revisit it.
/**
* @param String[][] $grid
* @return Integer
*/
function numIslands($grid) {
$count = 0;
for ($i=0; $i < count ($grid ); $i++) {
for ($j = 0; $j <count ($grid [$i ]); $j++) {
if ($grid [$i ][$j ] == "1 ") {
$count++;
// zero out rest of 1s
$this- >zeroOut($grid, $i, $j);
}
}
}
return $count;
}
function zeroOut( & $grid, $i, $j) {
if ($i < 0 || $i >=count($grid) || $j < 0 || $j >=count($grid[$i]) || $grid[$i][$j] == "0")
return;
$grid[$i][$j] = "0";
$this- >zeroOut($grid, $i-1, $j);
$this- >zeroOut($grid, $i+1, $j);
$this- >zeroOut($grid, $i, $j-1);
$this- >zeroOut($grid, $i, $j+1);
}
}
LeetCode 42. Trapping Rain Water
My solution to LeetCode 42. Trapping Rain Water in JavaScript.
/**
* @param {number[]} height
* @return {number}
*/
var trap = function (height ) {
let maxLeft = 0 ,maxRight = 0 ;
let left = 0 ;
let right = height .length - 1 ;
let total = 0 ;
while (left <right ) {
if (height [left ] <height [right ]) {
if (height [left ] >maxLeft ) {
maxLeft = height [left ];
} else {
total += maxLeft -height [left ]
}
left++ ;
} else {
if (height [right ] >maxRight ) {
maxRight = height [right ];
} else {
total += maxRight -height [right ]
}
right -- ;
}
}
return total ;
};
LeetCode 1089: Duplicate Zeros
LeetCode 1089: Duplicate Zeros solution in PHP.
/**
* @param Integer[] $arr
* @return NULL
*/
function duplicateZeros( & $arr) {
$len = count($arr);
for ($i=0; $i < $len; $i++) {
if (0 === $arr[$i]) {
array_splice($arr, $i++, 0, 0);
}
}
array_splice($arr, $len);
}
}
LeetCode 11. Container With Most Water
Here is my solution to Container with Most Water in JavaScript.
/**
* @param {number[]} height
* @return {number}
*/
var maxArea = function (height ) {
let left = 0 ;
let right = height .length - 1 ;
let maxWater = 0 ;
while (left <right ) {
const water = (right -left ) * Math.min (height [left ],height [right ]);
if (water > maxWater ) {
maxWater = water ;
}
if (height [left ] <height [right ]) {
left++ ;
} else {
right -- ;
}
}
return maxWater ;
};