1 爱打篮球的憨憨

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 5w+

leetcode 90. Subsets II

题目主要的核心思想还是dfs。先第一个位置

2020-05-16 10:48:38

leetcode 89. Gray Code

题目这道题知道格雷码是什么,以及他是怎么来的,就很好解答了。参考:解答方法一:当前的二进制数如何生成格雷码class Solution { public List<Integer> grayCode(int n) { int count = (1<<n); List<Integer> list = new ArrayList<>(); for(int i=0;i<count;i++){

2020-05-15 19:48:33

leetcode 82. Remove Duplicates from Sorted List II

题目这道题其实也是当前指针与下一指针的关系。一定要注意,判断当前指针与下一指针之间的关系时,要看是不是同一节点,而不要比对值class Solution { public ListNode deleteDuplicates(ListNode head) { if(head==null || head.next==null) return head; Li...

2020-04-18 22:56:21

leetcode 81. Search in Rotated Sorted Array II

题目先要判断哪一块是绝对单调的,然后分情况讨论因为这里存在着重复值,所以会存在特殊的case,[1,1,3,1],3。中间值与两边的值相等,这样就没法判断哪块是绝对单调的了。所以要遇见相同值的时候,r–class Solution { public boolean search(int[] nums, int target) { int l=0,r=nums.leng...

2020-04-15 21:15:13

leetcode 80. Remove Duplicates from Sorted Array II

题目与26题的思路类似。pre和cur两个指针指定位置。用count来限定重复的个数class Solution { public int removeDuplicates(int[] nums) { int pre=0,cur=1,count=1,n=nums.length; while(cur<n){ if(nums[...

2020-04-15 20:10:28

leetcode 79. Word Search

题目在不同位置起始搜索,采用dfs和回溯class Solution { public boolean exist(char[][] board, String word) { if(board.length==0 || board[0].length==0) return false; for(int i=0;i<board.length;i++...

2020-04-11 10:52:47

leetcode 78. Subsets

题目对于这种要求保持原来顺序的,要从下一个坐标开始dfs。class Solution { public List<List<Integer>> subsets(int[] nums) { List<List<Integer>> res = new ArrayList<>(); res.add(...

2020-04-08 17:03:25

leetcode 77. Combinations

题目dfs注意好条件class Solution { public List<List<Integer>> combine(int n, int k) { List<List<Integer>> res = new ArrayList<>(); dfs(res,new ArrayList<...

2020-04-08 16:52:56

leetcode 75. Sort Colors

题目经典的荷兰国旗问题。整个数组的范围为0~n-1。现在可以理解为小于等于num的范围边界为从左到-1这个位置。从边界往外逐一比较,如果这个数小于num,则将这个数与边界外的第一个数进行交换,并且将范围向外扩充一个。如果这个数大于num,则不做任何操作,接着往下比较。在数组的左右两端画两个区域less和more。从左开始遍历数组,如果等于num,则cur++;如果小于num,则与less外的...

2020-04-08 15:59:13

leetcode 74. Search a 2D Matrix

题目首先确定target在哪一行,也就是比较每一行的最后一个位置。class Solution { public boolean searchMatrix(int[][] matrix, int target) { if(matrix.length==0 || matrix[0].length==0) return false; int row = ma...

2020-04-08 15:30:48

leetcode 73. Set Matrix Zeroes

题目这道题的本质就是要用个额外空间来标记每一行和每一列是否存在0,如果存在的话,那么这一行或者这一列都要变为0。方法一:用两个数组分别代表每一行和每一列class Solution { public void setZeroes(int[][] matrix) { int row = matrix.length; int col = matrix[0...

2020-04-08 12:54:32

leetcode 71. Simplify Path

题目一开始想着用类似于split("\s+")这种的,发现没有,那就单个"/"划分吧,把空格的地方后期处理一下就行。因为StringBuilder的reverse是整个每个字符串都要翻转,所以要用到两个Stackclass Solution { public String simplifyPath(String path) { String[] str = path.s...

2020-04-08 11:05:32

leetcode 64. Minimum Path Sum

题目好痛心,我最喜欢的dfs面对这类问题总是超时。改用动态规划,当前位置的值是选择左边和上边的相邻位置的较小的值相加。class Solution { public int minPathSum(int[][] grid) { int row = grid.length; int col = grid[0].length; for(in...

2020-04-08 10:28:28

leetcode 63. Unique Paths II

题目和上一道题的思路差不多。动态规划,注意特殊点。class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { int[][] mat = obstacleGrid; int row = mat.length; int col = mat[0].l...

2020-04-07 22:53:45

leetcode 62. Unique Paths

题目看到第一题,第一反应dfs,太麻烦了,肯定超时,算了吧哈哈哈仔细一看,这不就是个数学题吗,总共需要走的步数是m+n-2,取出(m-1)和(n-1)当中较小的那一个,做排列组合就行。看网上的答案,是用dp。每一步的到达是由上面一步和左面一步来达到。即dp[i][j]=dp[i-1][j]+dp[i][j-1]class Solution { public int uniqueP...

2020-04-07 21:49:21

leetcode 61. Rotate List

题目练一下基本功,找好next的对应关系class Solution { public ListNode rotateRight(ListNode head, int k) { if(head==null || k==0) return head; ListNode dummy = new ListNode(-1); dummy.next...

2020-04-07 21:16:31

leetcode 60. Permutation Sequence

题目用dfs超时就要找到字母排列的顺序。比如说有n个字符,随意的选择出一个字符作为第一个字符,那么这个字符作为第一个字符出现的次数就是剩下字符排列组合的个数,也就是(n-1)!class Solution { public String getPermutation(int n, int k) { List<String> list = new Array...

2020-04-07 20:44:43

leetcode 52. N-Queens II

题目和上一题的思路一样,只不过变成统计个数。class Solution { public int totalNQueens(int n) { int[] res = new int[1]; String[][] mat = new String[n][n]; for(int i=0;i<n;i++){ fo...

2020-04-07 17:44:24

leetcode 51. N-Queens

题目那年秋招,遇见这道题,坐着如喽啰。其实就是dfs+回溯,目的是把所有的情况都遍历一遍。dfs的终止条件是填充到最后一行,因为是一行一行的填充。然后就是判断在某个位置填充的有效性。分别看这个点的左上方和右上方和上方是否存在Qclass Solution { public List<List<String>> solveNQueens(int n) { ...

2020-04-07 16:31:24

leetcode 59. Spiral Matrix II

题目与前面那道题大同小异,核心内容并没有变class Solution { public int[][] generateMatrix(int n) { int[][] mat = new int[n][n]; int res = 1; int left=0,right=n-1,up=0,bottom=n-1; while...

2020-04-06 22:51:37

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。