Implement a function print_number_lines(n) that prints n lines, where the i-th line contains the integers from 1 to i separated by spaces (e.g., n=3 prints "1" on line 1, "1 2" on line 2, "1 2 3" on line 3). Then: a) analyze the time and auxiliary space complexity for both a print-as-you-go approach and a build-then-print approach; b) describe common off-by-one pitfalls; c) provide a version that returns a list of strings instead of printing.