Simple Python Solution with Detailed Explanation (easy to understand)
using dp, setup save with len(nums) of -1, then create a list newn in which it includes two nums lists. Iterate through nums, and then newn. If newn[j] > nums[i
using dp, setup save with len(nums) of -1, then create a list newn in which it includes two nums lists. Iterate through nums, and then newn. If newn[j] > nums[i], change save[i] to newn[j] and then break the inner loop.  \n\n\n```\n\n```def nextGreaterElements(self, nums: List[int]) -> List[int]:\n        \n        save = [-1] * len(nums)\n        newn = nums + nums\n        \n        for i in range(len(nums)):\n            for j in range(i+1, len(newn)):\n                if newn[j] > nums[i]:\n                    save[i] = newn[j]\n                    break\n        \n        return save
['Dynamic Programming', 'Python']