阿伟很威猛
阿伟很威猛
全部文章
分类
归档
标签
去牛客网
登录
/
注册
阿伟很威猛的博客
全部文章
(共51篇)
题解 | #顺时针旋转矩阵#
方法:倒置矩阵 通过以下三个图发现,顺时针旋转90度的矩阵按行翻转后和原矩阵是转置关系即关于主对角线对称,所以为了得到旋转90度后的结果,可以先将原矩阵做对角线对称,再做行对称即可。 import java.util.*; public class Solution { /**...
2024-07-22
0
162
题解 | #旋转数组#
方法:翻转代平移 数组的循环移动的结果可以由三次翻转得到,第一次整个翻转实现目标的左右分离,只是为倒序,所以第二次和第三次是为了使之为正序,第二次是前m个数,即从0到m-1,第二次是后n-m个数,即从m到n-1的位置。其中,翻转函数挨个从两边向中间左右交换得到的,实现如下: impor...
2024-07-22
0
131
题解 | #矩阵最长递增路径#
方法:深度优先搜索+动态规划 由于不知道以哪个位置作为起点能得到最长递增路径长度,所以需要遍历每个位置,找出每个位置为起点的最长路径长度,最后比较就可以得到整个矩阵的最大递增的长度了。而每个起点的下一位置可以是上下左右四个方向,又需要挨个遍历,选好一个点后又成了子问题,所以采用深度优先...
2024-07-19
0
150
题解 | #括号生成#
方法:递归+回溯 n对括号的生成就是n个左括号和n个右括号组成的合法排列,在使用了一个左括号后,还剩n-1个左括号和n个右括号进入子问题递归。但是要保证序列合法,使用的右括号数不能大于左括号,因此需要每次都检查使用的括号数量。具体做法:step 1:将空串与左右括号各自使用了0个送入递...
2024-07-18
0
149
题解 | #字符串的排列#
方法:递归+回溯 和前面有重复项数字的全排列方法一样,即使这里是字符串但是排序后还是方便将相同的字母放在一块便于判断去重。其他都和前面一样,就是排序需要将字符串转为字符数组,还有字符串不能直接增删所以采用StringBuffer作为临时数组,可以增删字符。 import java.ut...
2024-07-18
0
177
题解 | #岛屿数量#
方法一:dfs深度优先遍历 题中岛屿是相互连接的1组成的,而要判断岛屿个数就需要挨个遍历,为防止多个1重复判断,就要把与当前1相邻的所有1都设为0,在判断某个方向是否为1时,又要再往下判断其相邻的情况,在遍历完所有相邻的情况后,再回溯,因此用到深度遍历递归调用的方法。步骤:首先,判断矩...
2024-07-17
0
137
题解 | #有重复项数字的全排列#
方法:递归+回溯 因为有重复的元素,所以需要去重,前面用到的交换的方法不适用了。这里我们采用一个临时数组记录当前添加的结果,用一个标记数组判断哪些元素已经加入,再每次添加时都需要判断是否和前一个元素相等,相等则不添加。步骤:step 1:先对数组按照字典序排序,获取第一个排列情况。st...
2024-07-17
0
123
题解 | #主持人调度(二)#
方法一:贪心思想->排序+遍历比较 利用贪心的思想,当上个活动和下个活动之间没有时间交集则不需要新增主持人,因此,要对有交集的主持人做判断,需增加多少主持人。步骤:1、将所有活动的开始时间和结束时间取出并分别排序。2、遍历,比较本次活动的开始时间和上个活动的结束时间的大小,若本次...
2024-07-14
0
256
题解 | #没有重复项数字的全排列#
方法一:递归+回溯 全排列就是要交换数组中元素位置所能得到的全部解,题目要求按字典序从小到大排列,则排序后的数组是字典序最小的,此后就保持前面的元素不变交换后面的元素,这个时候就用到了递归。递归终止条件是:遍历到最后一个位置,则添加当前顺序到结果数列。本级递归任务是:向后遍历,交换当前i...
2024-07-09
0
177
题解 | #数组中只出现一次的两个数字#
方法一:哈希表1、利用哈希表进行统计数字出现的频率2、再次遍历,找到只出现一次的数字,加入创建的ArrayList数组中3、要求非降序输出,则先比较二者的大小后输出,注意要求返回的是int【】数组,要创建此数组将得到的值作为其元素 import java.util.*; public class S...
2024-07-08
0
197
首页
上一页
1
2
3
4
5
6
下一页
末页