From b178cad38f8219b97c9151e1e66de8c12fc5f72c Mon Sep 17 00:00:00 2001 From: shiftNot <575517277@qq.com> Date: Sun, 25 Oct 2020 22:32:37 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E8=BF=99=E6=AC=A1=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E7=9A=84=E9=A2=98=E7=9B=AE=E6=98=AFlc=E4=B8=8A21=E9=A2=98?= =?UTF-8?q?=E5=90=88=E5=B9=B6=E5=8D=87=E5=BA=8F=E9=93=BE=E8=A1=A8=E5=92=8C?= =?UTF-8?q?88=E9=A2=98=E5=90=88=E5=B9=B6=E6=9C=89=E5=BA=8F=E6=95=B0?= =?UTF-8?q?=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...6\344\271\240\346\200\273\347\273\223.txt" | 2 ++ ...\345\272\217\351\223\276\350\241\250.java" | 24 +++++++++++++++++++ ...\345\272\217\346\225\260\347\273\204.java" | 12 ++++++++++ 3 files changed, 38 insertions(+) create mode 100644 "week01/week01\345\255\246\344\271\240\346\200\273\347\273\223.txt" create mode 100644 "week01/\345\220\210\345\271\266\345\215\207\345\272\217\351\223\276\350\241\250.java" create mode 100644 "week01/\345\220\210\345\271\266\346\234\211\345\272\217\346\225\260\347\273\204.java" diff --git "a/week01/week01\345\255\246\344\271\240\346\200\273\347\273\223.txt" "b/week01/week01\345\255\246\344\271\240\346\200\273\347\273\223.txt" new file mode 100644 index 00000000..95f41db0 --- /dev/null +++ "b/week01/week01\345\255\246\344\271\240\346\200\273\347\273\223.txt" @@ -0,0 +1,2 @@ +学习总结 +经过算法训练营第一周的学习和刷题,其实最大的感受是自己不再害怕做算法题了,当一个题目拿到手的时候,如果完全没有思路,可以去参考答案和其他人的解答,并不是想不出来就是自己笨,有些解法那确实不是一般人可以想出来的,自己不能想出来情有可原。然后就是其实算法这个东西跟别的知识点还真的不一样,必须动手敲代码,看是永远看不会的,它不像数据库,计算机网络这些东西一样。然后是具体的知识点,对于树之类的题目,用递归用得多,然后对于数组的题目,一般可以采取先排序的方式来降低算法的时间复杂度,而且双指针的用法也很常见,另外还有链表的题目,要熟悉链表交换节点的代码写法,相当于一个模板代码。道阻且长,算法题肯定有一个量变到质变的过程,希望70天后我也是一个刷了300道leetcode的大佬。 \ No newline at end of file diff --git "a/week01/\345\220\210\345\271\266\345\215\207\345\272\217\351\223\276\350\241\250.java" "b/week01/\345\220\210\345\271\266\345\215\207\345\272\217\351\223\276\350\241\250.java" new file mode 100644 index 00000000..188f73ab --- /dev/null +++ "b/week01/\345\220\210\345\271\266\345\215\207\345\272\217\351\223\276\350\241\250.java" @@ -0,0 +1,24 @@ +class Solution { + public ListNode mergeTwoLists(ListNode l1, ListNode l2) { + if(l1==null)return l2; + if(l2==null)return l1; + ListNode pre = new ListNode(-1); + ListNode prehead = pre; + while(l1!=null && l2!=null){ + if(l1.val > l2.val){ + pre.next = l2; + l2 = l2.next; + } + else{ + pre.next = l1; + l1 = l1.next; + } + + pre = pre.next; + } + + pre.next = (l1==null)?l2:l1; + + return prehead.next; + } +} \ No newline at end of file diff --git "a/week01/\345\220\210\345\271\266\346\234\211\345\272\217\346\225\260\347\273\204.java" "b/week01/\345\220\210\345\271\266\346\234\211\345\272\217\346\225\260\347\273\204.java" new file mode 100644 index 00000000..c310b834 --- /dev/null +++ "b/week01/\345\220\210\345\271\266\346\234\211\345\272\217\346\225\260\347\273\204.java" @@ -0,0 +1,12 @@ +class Solution { + public void merge(int[] nums1, int m, int[] nums2, int n) { + int p = m+n-1; + int p1 = m-1; + int p2 = n-1; + + while(p1>=0 && p2>=0) + nums1[p--] = nums1[p1]>nums2[p2] ? nums1[p1--]:nums2[p2--]; + + System.arraycopy(nums2,0,nums1,0,p2+1); + } +} \ No newline at end of file From 660184c979cf1e53238ca42b022436d61355cd37 Mon Sep 17 00:00:00 2001 From: shiftNot <575517277@qq.com> Date: Tue, 17 Nov 2020 15:43:59 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E5=81=9A=E4=BA=86=E6=9C=80=E9=95=BF?= =?UTF-8?q?=E5=85=AC=E5=85=B1=E5=AD=90=E5=BA=8F=E5=88=97=E7=9A=84=E9=A2=98?= =?UTF-8?q?=E5=92=8C=E7=BB=9F=E8=AE=A1=E4=BA=86=E7=AC=AC=E4=BA=94=E5=91=A8?= =?UTF-8?q?=E4=B8=80=E5=85=B1=E7=9A=84=E8=AF=BE=E5=90=8E=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\345\272\217\351\201\215\345\216\206.java" | 42 +++++++++++ ...\345\261\277\346\225\260\351\207\217.java" | 37 +++++++++ ...\345\217\267\347\224\237\346\210\220.java" | 36 +++++++++ ...\345\205\250\346\216\222\345\210\227.java" | 75 +++++++++++++++++++ ...\346\234\200\345\244\247\345\200\274.java" | 32 ++++++++ ...\351\233\267\346\270\270\346\210\217.java" | 68 +++++++++++++++++ ...\345\255\220\345\272\217\345\210\227.java" | 27 +++++++ ...5\351\242\230\347\233\256\345\215\225.txt" | 36 +++++++++ 8 files changed, 353 insertions(+) create mode 100644 "week04/102_\344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206.java" create mode 100644 "week04/200_\345\262\233\345\261\277\346\225\260\351\207\217.java" create mode 100644 "week04/22_\346\213\254\345\217\267\347\224\237\346\210\220.java" create mode 100644 "week04/46_\345\205\250\346\216\222\345\210\227.java" create mode 100644 "week04/515_ \345\234\250\346\257\217\344\270\252\346\240\221\350\241\214\344\270\255\346\211\276\346\234\200\345\244\247\345\200\274.java" create mode 100644 "week04/529_\346\211\253\351\233\267\346\270\270\346\210\217.java" create mode 100644 "week05/1143_\346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.java" create mode 100644 "week05/week05\351\242\230\347\233\256\345\215\225.txt" diff --git "a/week04/102_\344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206.java" "b/week04/102_\344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206.java" new file mode 100644 index 00000000..60441f3a --- /dev/null +++ "b/week04/102_\344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206.java" @@ -0,0 +1,42 @@ + /* + 思路: + 1.创建结果res保存,创建queue用于操作树的结点 + 2.特判,将根节点添加到queue中 + 3.开始循环: + 队列不为空时,获取每层节点数n,循环n次 + 每次将节点弹出,送入level内,遍历左右子节点 + 循环结束时将level添加到结果res中 +4.返回res + */ +class Solution { + public List> levelOrder(TreeNode root) { + List> res = new ArrayList<>(); + Deque queue = new ArrayDeque<>(); + + if(root != null){ + queue.add(root); + } + + while(!queue.isEmpty()){ + int n = queue.size(); + List level = new ArrayList<>();//特别注意这个level的定义位置,如果写在for循环里面的话,结果就不对了 + for(int i=0;i= row || j >= col || grid[i][j]=='0') return; + + grid[i][j] = '0'; + dfs(grid,i+1,j); + dfs(grid,i-1,j); + dfs(grid,i,j+1); + dfs(grid,i,j-1); + } +} \ No newline at end of file diff --git "a/week04/22_\346\213\254\345\217\267\347\224\237\346\210\220.java" "b/week04/22_\346\213\254\345\217\267\347\224\237\346\210\220.java" new file mode 100644 index 00000000..6446e31d --- /dev/null +++ "b/week04/22_\346\213\254\345\217\267\347\224\237\346\210\220.java" @@ -0,0 +1,36 @@ +/* +回溯法:每次可以添加左括号或者右括号,添加过程中如果出现右括号比左括号多的情况,进行剪枝,退出条件为左括号和右括号都用完了 + + +*/ +class Solution { + public List generateParenthesis(int n) { + List res = new ArrayList<>(); + + if(n == 0){ + return res; + } + + dfs("",n,n,res); + return res; + } + + public void dfs(String curStr,int left,int right,List res){ + if(left==0 && right==0){ + res.add(curStr); + return; + } + + if(left > right){ + return; + } + //注意这里的dfs进行下一步的时候是有条件判断的 + if(left > 0){ + dfs(curStr+"(",left-1,right,res); + } + + if(right > 0){ + dfs(curStr+")",left,right-1,res); + } + } +} \ No newline at end of file diff --git "a/week04/46_\345\205\250\346\216\222\345\210\227.java" "b/week04/46_\345\205\250\346\216\222\345\210\227.java" new file mode 100644 index 00000000..0d1a822d --- /dev/null +++ "b/week04/46_\345\205\250\346\216\222\345\210\227.java" @@ -0,0 +1,75 @@ +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Deque; +import java.util.List; +/* +思路: +1.特判 +2.结果res,保存 + used[] 布尔数组,保存值是否被使用 + path,双端队列,Deque保存临时值 +3.dfs(传入数组nums,depth, + path,used,res) +4.写dfs + 写终止条件: + if(depth == nums.length){ + res.add(new ArrayList<>(path)); + return; + } + for(i从0到nums.length){ + if(!used[i]){ + 添加元素; + used[i] = true; + + dfs( ,depth+1, ); + + 去除元素; + used[i] = false; + + } + } + + return; + +*/ +public class Solution { + public List> permute(int[] nums) { + List> res = new ArrayList<>(); + if(nums.length == 0){ + return res; + } + + boolean[] used = new boolean[nums.length]; + Deque path = new ArrayDeque<>(nums.length); + + dfs(nums,0,used,path,res); + + return res; + + } + + private void dfs(int[] nums, int depth, boolean[] used, Deque path, + List> res) { + + if(depth == nums.length){ + res.add(new ArrayList<>(path)); + return; + } + + for(int i=0;i largestValues(TreeNode root) { + //首先对二叉树进行层序遍历,这是必须的步骤,也有手动维护一个队列的过程 + List res = new ArrayList<>(); + Queue queue = new ArrayDeque<>(); + if (root != null) { + queue.add(root); + } + while (!queue.isEmpty()) { + int n = queue.size(); + int maxVal = Integer.MIN_VALUE; + List level = new ArrayList<>(); + for (int i = 0; i < n; i++) { + TreeNode node = queue.poll(); + maxVal = Math.max(maxVal,node.val); + if (node.left != null) { + queue.add(node.left); + } + if (node.right != null) { + queue.add(node.right); + } + } + res.add(maxVal); + + } + return res; + } +} \ No newline at end of file diff --git "a/week04/529_\346\211\253\351\233\267\346\270\270\346\210\217.java" "b/week04/529_\346\211\253\351\233\267\346\270\270\346\210\217.java" new file mode 100644 index 00000000..b2aa2ec0 --- /dev/null +++ "b/week04/529_\346\211\253\351\233\267\346\270\270\346\210\217.java" @@ -0,0 +1,68 @@ +/* +哔哩哔哩视频讲解: +https://www.bilibili.com/video/BV1wV411S7SY?from=search&seid=8418894508800694895 +小姐姐视频讲解哦! + + +思路: +1.点击的如果是炸弹,把'M'改为'X',返回原数组即可 +2.如果点击的是别的地方,进行dfs +3.dfs的过程呢就是: +*/ + +class Solution { + // int[] dx = {0, 1, 0, -1, 1, 1, -1, -1}; + // int[] dy = {1, 0, -1, 0, 1, -1, 1, -1}; + //这是官方给出的偏移坐标 + + int[] dx = {0,0,-1,-1,-1,1,1,1}; + int[] dy = {-1,1,0,1,-1,0,1,-1}; + + public char[][] updateBoard(char[][] board, int[] click) { + + int n = board.length; + int m = board[0].length; + + int x = click[0]; + int y = click[1]; + if(board[x][y] == 'M'){ + board[x][y] = 'X'; + } + else{ + dfs(board,x,y); + } + + return board; + } + + public void dfs(char[][] b,int x,int y){ + int count = 0; + int n = b.length; + int m = b[0].length; + for(int i=0;i<8;i++){ + int nx = x + dx[i]; + int ny = y + dy[i]; + if(nx>=0 && nx=0 && ny=0 && nx=0 && ny=0 && nx=0 && ny Date: Tue, 17 Nov 2020 16:04:16 +0800 Subject: [PATCH 3/7] =?UTF-8?q?6262=5F=E4=B8=8D=E5=90=8C=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\345\220\214\350\267\257\345\276\204.java" | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 "week05/62_\344\270\215\345\220\214\350\267\257\345\276\204.java" diff --git "a/week05/62_\344\270\215\345\220\214\350\267\257\345\276\204.java" "b/week05/62_\344\270\215\345\220\214\350\267\257\345\276\204.java" new file mode 100644 index 00000000..c9f094f9 --- /dev/null +++ "b/week05/62_\344\270\215\345\220\214\350\267\257\345\276\204.java" @@ -0,0 +1,26 @@ +/* +思路:首先把第一行和第一列的值赋为1 + 然后从第二行第二列开始操作 + 每个点的值为 它上方的值 和 它左边的值相加的和 + + +*/ + +class Solution { + public int uniquePaths(int m, int n) { + int[][] dp = new int[m][n]; + + for(int i = 0; i Date: Tue, 17 Nov 2020 16:51:14 +0800 Subject: [PATCH 4/7] =?UTF-8?q?63=5F=E4=B8=8D=E5=90=8C=E8=B7=AF=E5=BE=842?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5\220\214\350\267\257\345\276\204 II.java" | 45 +++++++++++++++++++ ...5\351\242\230\347\233\256\345\215\225.txt" | 2 - 2 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 "week05/63_\344\270\215\345\220\214\350\267\257\345\276\204 II.java" diff --git "a/week05/63_\344\270\215\345\220\214\350\267\257\345\276\204 II.java" "b/week05/63_\344\270\215\345\220\214\350\267\257\345\276\204 II.java" new file mode 100644 index 00000000..75bcdc48 --- /dev/null +++ "b/week05/63_\344\270\215\345\220\214\350\267\257\345\276\204 II.java" @@ -0,0 +1,45 @@ +class Solution { + public int uniquePathsWithObstacles(int[][] obstacleGrid) { + //获取路径数组的长宽 + int m = obstacleGrid.length; + int n = obstacleGrid[0].length; + + int[][] dp = new int[m][n]; + //判断路径数组的第一个格子,给dp首元素赋值 + if(obstacleGrid[0][0]==1) + return 0; + else{ + dp[0][0] = 1; + } + + //把dp的第一行和第一列赋值,条件是:若该处没有石头且它前面的那个格子可以到达,则此处可以到达,dp赋值为1 + for(int i =1;i Date: Wed, 18 Nov 2020 11:36:21 +0800 Subject: [PATCH 5/7] =?UTF-8?q?64=5F=E6=9C=80=E5=B0=8F=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E5=92=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\350\267\257\345\276\204\345\222\214.java" | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 "week05/64_\346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.java" diff --git "a/week05/64_\346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.java" "b/week05/64_\346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.java" new file mode 100644 index 00000000..1a7a09af --- /dev/null +++ "b/week05/64_\346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.java" @@ -0,0 +1,24 @@ +class Solution { + public int minPathSum(int[][] grid) { + int m = grid.length,n = grid[0].length; + int[][] dp = new int[m][n]; + + + dp[0][0] = grid[0][0]; + + for(int i = 1; i < m ; i++){ + dp[i][0] = grid[i][0] + dp[i-1][0]; + } + for(int i = 1; i < n ; i++){ + dp[0][i] = grid[0][i] + dp[0][i-1]; + } + + for(int i=1;i Date: Wed, 18 Nov 2020 18:58:32 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E5=89=8D=E5=87=A0=E5=91=A8=E7=9A=84?= =?UTF-8?q?=E7=AC=94=E8=AE=B0=E6=9B=B4=E6=96=B0=E4=B8=8A=E5=8E=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "week02/week02\347\254\224\350\256\260.docx" | Bin 0 -> 17937 bytes "week03/week03\347\254\224\350\256\260.docx" | 0 "week04/week04\347\254\224\350\256\260.docx" | Bin 0 -> 15262 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 "week02/week02\347\254\224\350\256\260.docx" create mode 100644 "week03/week03\347\254\224\350\256\260.docx" create mode 100644 "week04/week04\347\254\224\350\256\260.docx" diff --git "a/week02/week02\347\254\224\350\256\260.docx" "b/week02/week02\347\254\224\350\256\260.docx" new file mode 100644 index 0000000000000000000000000000000000000000..4fa6ff6e0a2bba1cb9226a26160128450f562ae6 GIT binary patch literal 17937 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 S{{Cw)IQzv(Mf8^x5C{58OM~ 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 QfDi8 Date: Thu, 19 Nov 2020 19:55:06 +0800 Subject: [PATCH 7/7] =?UTF-8?q?80=5F=E4=B8=8D=E5=90=8C=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=20III?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\220\214\350\267\257\345\276\204 III.java" | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 "week05/980_\344\270\215\345\220\214\350\267\257\345\276\204 III.java" diff --git "a/week05/980_\344\270\215\345\220\214\350\267\257\345\276\204 III.java" "b/week05/980_\344\270\215\345\220\214\350\267\257\345\276\204 III.java" new file mode 100644 index 00000000..a0803ad2 --- /dev/null +++ "b/week05/980_\344\270\215\345\220\214\350\267\257\345\276\204 III.java" @@ -0,0 +1,43 @@ +class Solution { + int res = 0; + int cnt = 1,sx,sy,ex,ey;//这里一定要用cnt为1来初始化,因为走到2还需要一步路 + public int uniquePathsIII(int[][] grid) { + int m = grid.length,n = grid[0].length; + for(int i=0;i= grid.length || y < 0 || y >= grid[0].length || grid[x][y] < 0)return; + if(x == ex && y == ey){ + if(cnt == 0)res++; + return; + } + cnt--; + grid[x][y] = -1; + + dfs(grid,x-1,y); + dfs(grid,x+1,y); + dfs(grid,x,y-1); + dfs(grid,x,y+1); + grid[x][y] = 0; + cnt++; + + } +} \ No newline at end of file