but the goal behind TopCoder problems should be improving thinking skills, not preparing interviews, I think.
Because not the actions which determines more our future, but the intentions, I think
it is helpful is most cases, but it has to be just a tool not a goal. a developer can reach the same thinking level just by working on its personal projects and by searching and reading about algorithms. However timed problems improve rapidity, which enterprise-oriented skill.
I agree, whole purpose of those learning is to improve thinking ability and problem solving skills, but it also intention of learner, which makes difference.
Knowing exact solutions to exact problems is not helpful.