Just read the intuition and approach and try to code. Don't try to understand the code or Copy paste
Intuition\nFor health h calculate all the places you can visit.\n Describe your first thoughts on how to solve this problem. \n\n# Approach\nTraverse through al
# Intuition\nFor health h calculate all the places you can visit.\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach\nTraverse through all the continuous zeros until no zeros are left to traverse and mark them as traversed and store them in another boolean array here i used c, store the value of h in array g1, for every place you traversed increment the traversed value here i used c1. Make all the adjcaent places also true and also store the value h-1 in array g1.\n<!-- Describe your approach to solving the problem. -->\n\n# Complexity\n- Time complexity:\n- O(h.n.m)\n\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity:\n- O(n.m)\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```java []\nclass Solution {\n    public boolean findSafeWalk(List<List<Integer>> gr, int h){\n        int g[][]=new int[gr.size()][gr.get(0).size()];\n        int g1[][]=new int[gr.size()][gr.get(0).size()];\n        boolean c[][]=new boolean[gr.size()][gr.get(0).size()];\n        for(int i=0;i<gr.size();i++)\n        {\n            for(int j=0;j<gr.get(0).size();j++)\n            {\n                g[i][j]=gr.get(i).get(j);\n            }\n        }\n        int t=0;\n        h-=g[0][0];\n        int c1=1;\n        c[0][0]=true;\n        while(h>0 && c1<g.length*g[0].length)\n        {\n            boolean b=true;\n            while(b)\n            {\n                b=false;\n                for(int i=0;i<g.length;i++)\n                {\n                    for(int j=0;j<g[0].length;j++)\n                    {\n                        if(c[i][j]==true)\n                        {\n                            if(i>0)\n                            {\n                                if(c[i-1][j]==false && g[i-1][j]==0)\n                                {\n                                    c1++;\n                                    c[i-1][j]=true;\n                                    b=true;\n                                    g1[i-1][j]=h;\n                                }\n                            }\n                            if(j>0)\n                            {\n                                if(c[i][j-1]==false && g[i][j-1]==0)\n                                {\n                                    c1++;\n                                    c[i][j-1]=true;\n                                    b=true;\n                                    g1[i][j-1]=h;\n                                }\n                            }\n                            if(i<g.length-1)\n                            {\n                                if(c[i+1][j]==false && g[i+1][j]==0)\n                                {\n                                    c1++;\n                                    c[i+1][j]=true;\n                                    b=true;\n                                    g1[i+1][j]=h;\n                                }\n                            }\n                            if(j<g[0].length-1)\n                            {\n                                if(c[i][j+1]==false && g[i][j+1]==0)\n                                {\n                                    c1++;\n                                    c[i][j+1]=true;\n                                    b=true;\n                                    g1[i][j+1]=h;\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n            boolean b1[][]=new boolean[g.length][g[0].length];\n            for(int i=0;i<g.length;i++)\n            {\n                for(int j=0;j<g[0].length;j++)\n                {\n                    if(c[i][j]==true)\n                    {\n                        if(i>0)\n                        {\n                            if(c[i-1][j]==false)\n                            {\n                                b1[i-1][j]=true;\n                            }\n                        }\n                        if(j>0)\n                        {\n                            if(c[i][j-1]==false)\n                            {\n                                b1[i][j-1]=true;\n                            }\n                        }\n                        if(i<g.length-1)\n                        {\n                            if(c[i+1][j]==false)\n                            {\n                                b1[i+1][j]=true;\n                            }\n                        }\n                        if(j<g[0].length-1)\n                        {\n                            if(c[i][j+1]==false)\n                            {\n                                b1[i][j+1]=true;\n                            }\n                        }\n                    }\n                }\n            }\n            for(int i=0;i<g.length;i++)\n            {\n                for(int j=0;j<g[0].length;j++)\n                {\n                    if(b1[i][j]==true)\n                    {\n                        c1++;\n                        g1[i][j]=h-1;\n                        c[i][j]=true;\n                    }\n                }\n            }\n            h--;\n        }\n        return g1[g.length-1][g[0].length-1]>0;\n    }\n\n    // public void bfs(int[][] g,int h,int i,int j,boolean[][] c)\n    // {\n    //     ArrayList<int[]> a=new ArrayList<>();\n    //     if(i<g.length-1)\n    //     {\n    //         if(g[i+1][j]==0 && !c[i+1][j])\n    //         {\n    //             c[i+1]=true;\n    //         }\n    //         else\n    //         {\n    //             a.add(new int[]{i+1,j});\n    //         }\n    //     }\n    //     if(i>0)\n    //     {\n    //         if(g[i-1][j]==0 && !c[i-1][j])\n    //         {\n    //             c[i-1][j]=true;\n    //         }\n    //         else\n    //         {\n    //             a.add(new int[]{i-1,j});\n    //         }\n    //     }\n    //     if(j<g[0].length-1)\n    //     {\n    //         if(g[i][j+1]==0 && !c[i][j+1])\n    //         {\n    //             c[i][j+1]=true;\n    //         }\n    //         else\n    //         {\n    //             a.add(new int[]{i,j+1});\n    //         }\n    //     }\n    //     if(j>0)\n    //     {\n    //         if(g[i][j-1]==0 && !c[i][j-1])\n    //         {\n    //             c[i][j-1]=true;\n    //         }\n    //         else\n    //         {\n    //             a.add(new int[]{i,j-1});\n    //         }\n    //     }\n    // }\n\n\n\n    // public static boolean b=false;\n    // public boolean findSafeWalk(List<List<Integer>> gr, int h) {\n    //     b=false;\n    //     int g[][]=new int[gr.size()][gr.get(0).size()];\n    //     for(int i=0;i<gr.size();i++)\n    //     {\n    //         for(int j=0;j<gr.get(0).size();j++)\n    //         {\n    //             g[i][j]=gr.get(i).get(j);\n    //         }\n    //     }\n    //     dfs(g,h,0,0);\n    //     return b;\n    // }\n    // public void dfs(int[][] g,int h, int i, int j)\n    // {\n    //     if(b)\n    //     {\n    //         return;\n    //     }\n    //     h-=g[i][j];\n    //     if(h<=0)\n    //     {\n    //         return;\n    //     }\n    //     if(i==g.length-1 && j==g[0].length-1 && h>0)\n    //     {\n    //         b=true;\n    //     }\n    //     if(b)\n    //     {\n    //         return;\n    //     }\n    //     g[i][j]=2;\n    //     int[][] t=new int[g.length][g[0].length];\n    //     for(int k=0;k<g.length;k++)\n    //     {\n    //         for(int l=0;l<g[0].length;l++)\n    //         {\n    //             t[k][l]=g[k][l];\n    //         }\n    //     }\n    //     boolean c=true;\n    //     if(i>0)\n    //     {\n    //         if(g[i-1][j]<2 && j!=0 && j!=g[0].length-1)\n    //         {\n    //             if(i-1>0)\n    //             {\n    //                 if(t[i-2][j]==2)\n    //                 {\n    //                     c=false;\n    //                 }\n    //             }\n    //             if(j>0)\n    //             {\n    //                 if(t[i-1][j-1]==2)\n    //                 {\n    //                     c=false;\n    //                 }\n    //             }\n    //             if(j<t[0].length-1)\n    //             {\n    //                 if(t[i-1][j+1]==2)\n    //                 c=false;\n    //             }\n    //             if(c)\n    //             {\n    //                 dfs(t,h,i-1,j);\n    //             }\n    //         }\n    //     }\n    //     if(b)\n    //     {\n    //         return;\n    //     }\n    //     c=true;\n    //     for(int k=0;k<g.length;k++)\n    //     {\n    //         for(int l=0;l<g[0].length;l++)\n    //         {\n    //             t[k][l]=g[k][l];\n    //         }\n    //     }\n    //     if(j>0)\n    //     {\n    //         if(g[i][j-1]<2 && i!=0 && i!=g.length-1)\n    //         {\n    //             if(i>0)\n    //             {\n    //                 if(t[i-1][j-1]==2)\n    //                 {\n    //                     c=false;\n    //                 }\n    //             }\n    //             if(j>1)\n    //             {\n    //                 if(t[i][j-2]==2)\n    //                 {\n    //                     c=false;\n    //                 }\n    //             }\n    //             if(i<t.length-1)\n    //             {\n    //                 if(t[i+1][j-1]==2)\n    //                 c=false;\n    //             }\n    //             if(c)\n    //             {\n    //                 dfs(t,h,i,j-1);\n    //             }\n    //         }\n    //     }\n    //     if(b)\n    //     {\n    //         return;\n    //     }\n    //     for(int k=0;k<g.length;k++)\n    //     {\n    //         for(int l=0;l<g[0].length;l++)\n    //         {\n    //             t[k][l]=g[k][l];\n    //         }\n    //     }\n    //     c=true;\n    //     if(i<g.length-1)\n    //     {\n    //         if(g[i+1][j]<2)\n    //         {\n    //             if(i<g.length-2)\n    //             {\n    //                 if(t[i+2][j]==2)\n    //                 {\n    //                     c=false;\n    //                 }\n    //             }\n    //             if(j>0)\n    //             {\n    //                 if(t[i+1][j-1]==2)\n    //                 {\n    //                     c=false;\n    //                 }\n    //             }\n    //             if(j<t[0].length-1)\n    //             {\n    //                 if(t[i+1][j+1]==2)\n    //                 c=false;\n    //             }\n    //             if(c)\n    //             {\n    //                 dfs(t,h,i+1,j);\n    //             }\n    //         }\n    //     }\n    //     if(b)\n    //     {\n    //         return;\n    //     }\n    //     for(int k=0;k<g.length;k++)\n    //     {\n    //         for(int l=0;l<g[0].length;l++)\n    //         {\n    //             t[k][l]=g[k][l];\n    //         }\n    //     }\n    //     c=true;\n    //     if(j<g[0].length-1)\n    //     {\n    //         if(g[i][j+1]<2)\n    //         {\n    //             if(i>0)\n    //             {\n    //                 if(t[i-1][j+1]==2)\n    //                 {\n    //                     c=false;\n    //                 }\n    //             }\n    //             if(j<t[0].length-2)\n    //             {\n    //                 if(t[i][j+2]==2)\n    //                 {\n    //                     c=false;\n    //                 }\n    //             }\n    //             if(i<t.length-1)\n    //             {\n    //                 if(t[i+1][j+1]==2)\n    //                 c=false;\n    //             }\n    //             if(c)\n    //             {\n    //                 dfs(t,h,i,j+1);\n    //             }\n    //         }\n    //     }\n    //     return;\n    // }\n}\n```
['Java']