public int uniquePathsWithObstacles2(int[][] obstacleGrid) {
		
		if(obstacleGrid == null || obstacleGrid.length == 0 || obstacleGrid[0].length == 0) {
			return 0;
		}
		
		cache = new int[obstacleGrid.length][obstacleGrid[0].length];
		int rst = helper(obstacleGrid, obstacleGrid.length - 1, obstacleGrid[0].length - 1);
	
		return rst;
	}