Hard
A knight starts at the top-left cell of grid and must reach the bottom-right cell, moving only right or down. Each cell adds its value to the knight's health (negative values are demons, positive are potions). The knight dies if health drops to 0 or below at any point. Return the minimum initial health needed to survive the journey.
Input: dungeon = [[-2,-3,3],[-5,-10,1],[10,30,-5]] Output: 7
Input: dungeon = [[0]] Output: 1