- 博客(7)
- 收藏
- 关注
原创 小白算法刷题Day7
复原IP地址:回溯法,ip总共由三个点分割,在一个ip定下之后 下一个ip只可能有3个位置。用回溯法找出所有使ip符合规则的点的组合。放置完三个点之后,如果当前的位置已经是字符串结尾了,说明ip第四部分没值,这时候不会有合法组合,需要删除刚添加的部分并回溯。如果第四部分合法则当前ip合法, 添加第四部分之后将当前ip加入ans里,并删除末尾部分。用parseInt判断范围的时候,字符串里可能会有超出int范围的数,所以先判断长度筛选一波,长度大于3的直接忽略。需要注意的是什么时候需要删除possibleAn
2021-09-22 11:25:41
80
原创 小白算法刷题Day6
单词的压缩编码:利用HashSet来实现单词的后缀取去重。 先将每个单词存入Set里,遍历一个单词数组,遍历每个单词的所有可能后缀,尝试在set中删除这一后缀,利用set.remove();的特点,如果存在才删除,存在就说明有某个单词是当前这个单词的后缀,便不用加入有效编码。最后留下来的部分都是需要加入到有效编码长度里的单词。 有个快捷将数组数据加入到set里的方法是: HashSet<String> set = new HashSet<String>(Arrays.asLis
2021-09-19 10:20:41
106
原创 小白算法刷题Day5
整数翻转:int 类型的范围是 , 将数字不断取余10 得到的每一位都加入ArrayList里,定义一个Long ans,把ArrayList里的数字正序乘10多少次方,计算出结果, 如果最后(int)ans == ans就返回ans 否则返回0. 不等的时候说明ans已经超过int的最大值。 class Solution { public int reverse(int x) { List<Integer> number = new ArrayList<I
2021-09-17 16:25:13
112
原创 小白算法刷题Day4
最大正方形:思路是利用动态规划求解。遍历所有可能的长度,把矩阵中的每个点都当成这个长度下的正方形的右下角,判断当前长度下以这个点为右下角的正方形是否存在,存在DP[i][j]等于面积。判断的条件是确定这个点的上方,左方,左上方的值不小于上一轮的lenth*length。加入一个ans 每次找到更大的面积就更新ans。最后返回ans便是答案。 class Solution { public int maximalSquare(char[][] matrix) { int max
2021-09-17 09:51:05
107
原创 小白算法刷题Day3
获取一个二维数组的行数 eg.length , 获取一个二维数组的列数 eg[0].length. 岛屿的数量思路:dfs 其实类似于感染, 遇到同类就感染,直到到了边界或不是同类的时候就返回(递归思想)。所有遇到的同类都应该被标记(如果不可再次访问的话),以防再次访问。 class Solution { public int numIslands(char[][] grid) { int islandNum = 0; for(int i = 0; i <
2021-09-16 10:09:04
74
原创 小白算法刷题Day2
List<List<Integer>> list : 1.List 不能被实例化,即不能等于new List。。。。 2.可以被实例化成ArrayList(注意AL大写)。 3.同样内部的List<Integer> 也要被实例成ArrayList<Integer>() 4.list.add(listTemp);之后 如果listTemp被改变了, list里的listTemp部分也被改变。因为List是引用类型, 将对象传入List的时候要new一个新
2021-09-15 08:14:35
129
原创 小白算法刷题Day1
java 中的string是无法改变的,这意味着在调用replace等方法时实际上是创建了一个新的string。如果此时仅使用s.replace("xx",""); s还是原来的s。只能通过重新分配来改变s。方法如下: s = s.replace("xx",""); Stack 的定义 Stack<Object类型> stack = new stack<Object 类型>(); Object类型可以不特意声明,这样stack中存的可以是各种你自己创建的或者现有的object。如
2021-09-13 16:00:29
110
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人