a blog about nothing
Otherside
Creep
What do you want to be when you grow up
Yesterday, after I picked up Ayden from his daycare, he said, he didn’t know what he wants to be. I guess they asked him this question in his class. I told him he has plenty of time to figure it out. There is no rush.
Then later at night he said, “Baba, I know what I want to be. I want to be a Tow Truck Driver.” He said it would be so much fun to tow cars.
…LeetCode 206. Reverse Linked List
Here is a quick solution to Reverse Linked List problem.
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var reverseList = function(head) {
let curr = head;
let prev = null;
while (curr) {
let next = curr.next;
curr.next = prev;
prev = curr;
curr = next;
}
return prev;
};
Importing plotly failed. Interactive plots will not work.
Fix:
pip3 install --upgrade plotly
LeetCode 560. Subarray Sum Equals K
Brute Force Solution to Subarray Sum Equals K problem from LeetCode:
/**
* @param {number[]} nums
* @param {number} k
* @return {number}
*/
var subarraySum = function(nums, k) {
let ans = 0;
for (let i=0; i<nums.length; i++) {
let currSum = nums[i];
if (currSum === k) ans++;
for (let j=i+1; j<nums.length; j++) {
currSum += nums[j];
if (currSum === k) ans++;
}
}
return ans;
};
Optimized solution after cheating a bit:
/**
* @param {number[]} nums
* @param {number} k
* @return {number}
*/
var subarraySum = function(nums, k) {
let ans = 0;
const m = new Map();
let sum=0;
m.set(sum, 1);
for (let i=0; i<nums.length; i++) {
sum += nums[i];
if (m.has(sum-k)) {
ans += m.get(sum-k);
}
if (!m.has(sum)) {
m.set(sum, 1);
} else {
m.set(sum, m.get(sum) + 1);
}
}
return ans;
};
Runtime: 96 ms, faster than 94.76% of JavaScript online submissions for Subarray Sum Equals K.
…LeetCode 2. Add Two Numbers
Here is my solution to Add Two Numbers problem in PHP:
/**
* Definition for a singly-linked list.
* class ListNode {
* public $val = 0;
* public $next = null;
* function __construct($val = 0, $next = null) {
* $this->val = $val;
* $this->next = $next;
* }
* }
*/
class Solution {
/**
* @param ListNode $l1
* @param ListNode $l2
* @return ListNode
*/
function addTwoNumbers($l1, $l2) {
$ans = new ListNode(0, null);
$p = $l1;
$q = $l2;
$current = $ans;
$carry=0;
while ($p != null || $q != null) {
$x = isset($p) ? $p->val : 0;
$y = isset($q) ? $q->val : 0;
$sum = $carry + $x + $y;
$carry = (int) ($sum/10);
$current->next = new ListNode($sum%10);
$current = $current->next;
if ($p != null) $p = $p->next;
if ($q != null) $q = $q->next;
}
if ($carry > 0) {
$current->next = new ListNode($carry);
}
return $ans->next;
}
}
Docker in 5 minutes
I have been using Docker and Kubernetes for several years now but never really took any time to really read about it. There were a lot of gaps in my understanding of how Docker works and what really is possible with it. Just recently my employer started to offer Udemy’s subscription, so I took Hands on Docker course. Here are some of the important things I learned in this course.
Where do you run Docker containers
You run these in Windows or MacOS but most likely you will use Linux in production. And unlike Windows and MacOS, you can run Docker on Linux VPS.
…LeetCode 7. Reverse Integer
My initial solution for Reverse Integer problem:
/**
* @param {number} x
* @return {number}
*/
var reverse = function(x) {
let ans = '';
if (x<0) {
ans = '-';
x*=-1;
}
str = x.toString();
for (let i=str.length-1; i>=0; i--) {
ans += str[i];
}
ans = parseInt(ans);
if (ans>2**31-1 || ans<(-2)**31) {
return 0;
}
return ans;
};
Results
Runtime: 104 ms, faster than 34.78% of JavaScript online submissions for Reverse Integer.
Memory Usage: 40.5 MB, less than 33.80% of JavaScript online submissions for Reverse Integer.
…LeetCode 3. Longest Substring Without Repeating Characters
Here is my solution in PHP to this problem.
class Solution {
/**
* @param String $s
* @return Integer
*/
function lengthOfLongestSubstring($s) {
$n = strlen($s);
$ans = 0;
$i = 0;
$j = 0;
$arr = [];
while ($i < $n && $j < $n) {
if (!in_array($s[$j], $arr)) {
$arr[] = $s[$j++];
$ans = max($ans, $j-$i);
} else {
array_splice($arr, 0, 1);
$i++;
}
}
return $ans;
}
}
And here is solution JavaScript based on this Udemy lesson:
…