The brute force approach checks every pair of numbers. That's time. With elements, you're looking at million operations. Too slow for an optimal solution.
Think about what you're doing when you check each pair: for every number, you're asking whether its complement (target current) exists somewhere in the array.