How To Approach Leetcode Hard Problems