Leetcode Activity Selection Problem Algorithmic Thinking Definition