一、题目大意标签:搜索https://leetcode.cn/problems/minimum-height-trees树是一个无向图,其中任何两个顶点只通过一条路径连接。换句话说,一个任何没有简单环路的连通图都是一棵树。给你一棵包含 n 个节点的树,标记为 0 到 n-1。给定数字 n 和一个有n-1条无向边的edges 列表(每一个边都是一对标签),其中edges[i]=[ai,bi]表示树中节点ai和bi之间存在一条无向边。可选择树中任何一个节点作为根。当选择节点x作为根节点时,设结果树的高度为h。在所有可能的树中,具有最小高度的树(即,min(h))被称为最小高度树。请你找到所有的最小
一、题目大意标签:搜索https://leetcode.cn/problems/minimum-height-trees树是一个无向图,其中任何两个顶点只通过一条路径连接。换句话说,一个任何没有简单环路的连通图都是一棵树。给你一棵包含 n 个节点的树,标记为 0 到 n-1。给定数字 n 和一个有n-1条无向边的edges 列表(每一个边都是一对标签),其中edges[i]=[ai,bi]表示树中节点ai和bi之间存在一条无向边。可选择树中任何一个节点作为根。当选择节点x作为根节点时,设结果树的高度为h。在所有可能的树中,具有最小高度的树(即,min(h))被称为最小高度树。请你找到所有的最小
目录6283.正整数和负整数的最大计数代码6285.执行K次操作后的最大分数代码6284.使字符串总不同字符的数目相等代码6283.正整数和负整数的最大计数代码直接遍历统计即可classSolution{publicintmaximumCount(int[]nums){inta=0,b=0;for(inti=0;i0)a++;elseif(nums[i]6285.执行K次操作后的最大分数代码用最大堆即可ceil是上取整,操作数和返回值都是double,需要强转,可能会出现浮点错误,所以使用整数运算规避。ceil(a/b)=(a+b-1)/bclassSolution{publiclongmax
目录6283.正整数和负整数的最大计数代码6285.执行K次操作后的最大分数代码6284.使字符串总不同字符的数目相等代码6283.正整数和负整数的最大计数代码直接遍历统计即可classSolution{publicintmaximumCount(int[]nums){inta=0,b=0;for(inti=0;i0)a++;elseif(nums[i]6285.执行K次操作后的最大分数代码用最大堆即可ceil是上取整,操作数和返回值都是double,需要强转,可能会出现浮点错误,所以使用整数运算规避。ceil(a/b)=(a+b-1)/bclassSolution{publiclongmax
1.二维数组及滚动数组总结在二维数组num[i][j]中,每个元素都是一个数组。有时候,二维数组中的某些元素在整个运算过程中都需要用到;但是有的时候我们只需要用到前一个或者两个数组,此时我们便可以用几个数组来代替原来的二维数组来降低空间消耗。这个思维就是:滚动数组。滚动数组就是使用k个一维数组来保存原来二维数组的后k个数组,在使用的过程中通过不断更新这k个数组来达到与二维数组相同的效果。注意:滚动数组的目的是:减少空间消耗;滚动数组能够使用的前提是:每次处理时不需要访问二维数组中的所有元素,只与当前处理元素的前一个或两个数组有关,如:num[i][j]=num[i-1][j]+num[i-2]
1.二维数组及滚动数组总结在二维数组num[i][j]中,每个元素都是一个数组。有时候,二维数组中的某些元素在整个运算过程中都需要用到;但是有的时候我们只需要用到前一个或者两个数组,此时我们便可以用几个数组来代替原来的二维数组来降低空间消耗。这个思维就是:滚动数组。滚动数组就是使用k个一维数组来保存原来二维数组的后k个数组,在使用的过程中通过不断更新这k个数组来达到与二维数组相同的效果。注意:滚动数组的目的是:减少空间消耗;滚动数组能够使用的前提是:每次处理时不需要访问二维数组中的所有元素,只与当前处理元素的前一个或两个数组有关,如:num[i][j]=num[i-1][j]+num[i-2]
一、题目大意标签:搜索https://leetcode.cn/problems/word-search给定一个 mxn二维字符网格 board和一个字符串单词 word。如果 word存在于网格中,返回true;否则,返回false。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例1:输入:board=[["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]],word="ABCCED"输出:true示例2:输入:board=[["A","B",
一、题目大意标签:搜索https://leetcode.cn/problems/combinations给定两个整数n和k,返回范围[1,n]中所有可能的k个数的组合。你可以按任何顺序返回答案。示例1:输入:n=4,k=2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]示例2:输入:n=1,k=1输出:[[1]]提示:11二、解题思路用回溯方法解决组合问题,类似排列,排列回溯的是交换的位置,而组合回溯的是否把当前的数字加入结果中。三、解题方法3.1Java实现publicclassSolution{publicList>combine(intn,intk){L
一、题目大意标签:搜索https://leetcode.cn/problems/permutations给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。示例1:输入:nums=[1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例2:输入:nums=[0,1]输出:[[0,1],[1,0]]示例3:输入:nums=[1]输出:[[1]]提示:1-10nums中的所有整数互不相同二、解题思路使用回溯法解决此问题,对于每一个当前位置i,我们可以将其与之后的任意位置交换,然后继续处理位置i+1,
一、题目大意标签:搜索https://leetcode.cn/problems/number-of-provinces有n个城市,其中一些彼此相连,另一些没有相连。如果城市a与城市b直接相连,且城市b与城市c直接相连,那么城市a与城市c间接相连。省份是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个nxn的矩阵isConnected,其中isConnected[i][j]=1表示第i个城市和第j个城市直接相连,而isConnected[i][j]=0表示二者不直接相连。返回矩阵中省份的数量。示例1:输入:isConnected=[[1,1,0],[1,1,0],[0,0,1]]输