摘要: 2039. 网络空闲的时刻 Solution 思路:一开始以为多源最短路径,但是n太大了,突然看到边权都是1,所以可以直接BFS,然后再根据每个点到源点的距离以及重发时间求最大即可。可以考虑三种情况: \(patience\ge2*distance\):应为$2*distance + 1$ \(pa 阅读全文
posted @ 2022-03-20 16:15 Frontierone 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 606. 根据二叉树创建字符串 Solution 思路:最开始的思路就是简单的先序遍历,然后就可以得到带有空括号的字符串,再处理即可,代码都写了,然后发现有问题,还是在遍历的时候控制比较好,然后就开始无脑乱改,发现逻辑是通的,不过代码已经成狗屎了,删了重新写,梳理逻辑,1Y 主要是叶节点和非叶节点的 阅读全文
posted @ 2022-03-19 10:54 Frontierone 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 397. 整数替换 Solution 思路:BFS或者DFS,但是最大范围是2^31-1,会超出int的最大范围。还可以进行记忆化搜索。题解中面对奇数的情况,可以等效为2步到达偶数,即$2+Math.min(dfs(\frac{val +1}{2},dfs(\frac{val-1}{2}))\(,这 阅读全文
posted @ 2022-03-18 11:34 Frontierone 阅读(33) 评论(0) 推荐(0) 编辑
摘要: 102. 二叉树的层序遍历 Solution 思路:搞一个深度,然后放到对应的层次里。这里开List嵌套的时候有点坑,不过根据list的容量大小和层次的高度关系,来进行创建。这里的NewNode不能共用。题解代码是 用for循环搞出来那一层的。普通的BFS是弹出一个。见下面代码二。 更新:LeetC 阅读全文
posted @ 2022-03-17 23:57 Frontierone 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 20. 有效的括号 Solution 思路:左边入栈,遇到右边判断即可,最后看堆栈是否为空。 class Solution { public boolean isValid(String s) { Stack<Character> stack = new Stack<>(); char[] str 阅读全文
posted @ 2022-03-16 21:46 Frontierone 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 3. 无重复字符的最长子串 Solution 思路:刚开始考虑是map记录下标,然后重复的话就看map的下标位置,得到极大子串的长度,但是没有考虑到这个过程中是可以维护出不重复的字串的,通过几个样例模拟,然后就以为map只是一开始用到了,后面都是靠的下标去得到子串长度,不删除的话还不好维护,没往删除 阅读全文
posted @ 2022-03-14 20:18 Frontierone 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 2. 两数相加 Solution 思路:模拟。自己的写法是两个一起循环,其中一个结束就停止循环,再处理另一个链表,不过也可以一直循环,但是可以直接连接过去,然后就是考虑进位。 //class ListNode { // int val; // ListNode next; // ListNode() 阅读全文
posted @ 2022-03-13 13:41 Frontierone 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 1. 两数之和 Solution 思路1:直接双重for循环,枚举每个数字,找到后返回结果 class Solution { public int[] twoSum(int[] nums, int target) { int len = nums.length; for (int i = 0; i 阅读全文
posted @ 2022-03-13 11:24 Frontierone 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 540. 有序数组中的单一元素 Solution 思路:异或遍历一遍,相同数字异或为0,异或结果即为单个数字的值。时间复杂度O(n) class Solution { public int singleNonDuplicate(int[] nums) { int m = nums.length; i 阅读全文
posted @ 2022-02-16 12:06 Frontierone 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 1380. 矩阵中的幸运数 Solution 思路:自己的思路就是遍历两遍数组,然后另开计数数组,如果同一个位置被计两次,则为幸运数。时间复杂度和空间复杂度都是O(mn),看了题解是可以在遍历的时候直接判断的,时间复杂度为O(mn*(m+n),空间复杂度为O(1),因为不需要另开保存结果。还有一个方 阅读全文
posted @ 2022-02-16 11:18 Frontierone 阅读(35) 评论(0) 推荐(0) 编辑