算法
我的算法之旅
我爱吃回锅肉
初学java,必须学会写笔记,嘿嘿,我的博客全是我的笔记。排班太乱,大家多多理解
展开
-
LeetCode297-二叉树的序列化与反序列化
链接: https://leetcode-cn.com/problems/serialize-and-deserialize-binary-tree/ 对于二叉树的问题来说,其实归根结底就是考遍历树的三种方式,就是在遍历之前加上条件,由于树有天然的递归性,递归可以解决很多关于树的问题,如果还想优化一点那就bfs吧,套上模板 package algorithm.leetCode.tree; import java.util.LinkedList; import java.util.Queue; .原创 2020-10-26 20:21:52 · 124 阅读 · 0 评论 -
洛谷P1508(java版)
话不多说,传送门来了: https://www.luogu.com.cn/problem/P1508 题目背景 问世间,青春期为何物? 答曰:“甲亢,甲亢,再甲亢;挨饿,挨饿,再挨饿!” 题目描述 正处在某一特定时期之中的李大水牛由于消化系统比较发达,最近一直处在饥饿的状态中。某日上课,正当他饿得头昏眼花之时,眼前突然闪现出了一个 n×m(n,m≤200)n \times m(n,m \le 200)n×m(n,m≤200) 的矩型的巨型大餐桌,而自己正处在这个大餐桌的一侧的中点下边。餐桌被划分为了 n.原创 2020-10-23 20:33:08 · 203 阅读 · 0 评论 -
洛谷P1738 洛谷的文件夹(java)
这是一道 普及+/提高的题,说起洛谷的题对于java选手来说,真的是太不友好,做不来只能去看c/c++的题解。。。。。。一言难尽,为了做一道题真的太难了 传送门: https://www.luogu.com.cn/problem/P1738 直接上代码: package algorithm.luogu; import java.util.*; /** * @author 小黎 * @date 2020/10/21 18:39 * @description emmm这道题给我的第一眼.原创 2020-10-22 15:56:43 · 200 阅读 · 0 评论 -
LeetCode739
传送门: https://leetcode-cn.com/problems/daily-temperatures/ 这道题的话,首先想到的就是暴力解法,暴力出来还能过,不过效率是十分的低下的,先来看看暴力的代码,执行效果就像下面的一样 执行结果: 通过 显示详情 执行用时:1316 ms, 在所有 Java 提交中击败了5.01% 的用户 内存消耗:46.1 MB, 在所有 Java 提交中击败了75.40% 的用户 class Solution { public int[] dailyTemp.原创 2020-10-20 18:41:32 · 94 阅读 · 0 评论 -
洛谷P1091合唱队形
传送门:https://www.luogu.com.cn/problem/P1091 这道题的话主要是一道求最长子序列的问题,但是是从正序和倒序开始求的,对于正序列的最长子序列可以看看LeetCode上的300号问题。求最长子序列当然是用dp呢具体的看下面的代码: import java.util.Arrays; import java.util.Scanner; /** * @author 小黎 * @date 2020/10/19 16:58 * @description 对于这道义来说的.原创 2020-10-20 18:34:54 · 115 阅读 · 0 评论 -
洛谷P1167
传送门 https://www.luogu.com.cn/problem/P1167 对于这道题来说思路还是挺好想的,主要是要先知道时间戳这个概念。然后再就是由于字符串的输入是不符合"yyyy-MM-dd HH:mm:ss"这个模板的,题目的输入要求是2007-06-23-12:00这样输出的,所以就先要对输入的字符串进行一个处理,主要是SimpleDateFormat sdf = new SimpleDateFormat( “yyyy-MM-dd HH:mm” )这样转化为时间。然后获取时间戳主要是原创 2020-09-28 15:07:31 · 230 阅读 · 0 评论 -
LeetCode15-三数之和(java)
传送门: https://leetcode-cn.com/problems/3sum/ 总结 对于这道题呢,要想就解决数字是可以的但是如何去重是一个值得思考的地方,我做了好久好久最后就超时了,看了一下我主要是调用了list.contains()方法让复杂度又提升了一个阶段,所以提交的时候,最后三个很大的测试用例通不过,然后就超时了,看到自己无法优化,就去借鉴了官方的答题思路,发现在去重的很巧妙。 主要思路: 主要还是去重的思路很重要主要是判断指针后的一个数是否和指针指向的数是否相等,然后跳过这个数原创 2020-09-22 08:47:56 · 109 阅读 · 0 评论 -
LeetCode3— 无重复字符的最长子串
传送门 https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/submissions/ 对于这道题来说呢,我觉得用的方法是滑动窗口,首先给我的感觉有字母,我就觉得利用用ASCII码来表示字母的位置然后来找到最长的子串。 public class LeetCode3 { //滑动窗口的思想 public static int lengthOfLongestSubstring(Strin原创 2020-09-20 12:15:05 · 95 阅读 · 0 评论 -
LeetCode16-最接近的三数之和
执行用时:6 ms, 在所有 Java 提交中击败了85.77% 的用户 内存消耗:38.4 MB, 在所有 Java 提交中击败了78.77% 的用户 传送门:https://leetcode-cn.com/problems/3sum-closest/submissions/ 这道题来说,也是一道指针对撞的题目,不同的是在一个循环内开始的,因为题目要求的是求3个数之和,但是我们的指针只有两个,于是便采取在外层加一个循环的方式来进行3数之和。 public class LeetCode16 {原创 2020-09-18 15:25:16 · 87 阅读 · 0 评论 -
LeetCode11- 盛最多水的容器
我觉得这道题可以用对撞指针的思想来完成 执行用时:4 ms, 在所有 Java 提交中击败了67.70% 的用户 内存消耗:39.5 MB, 在所有 Java 提交中击败了7.80% 的用户 传送门 https://leetcode-cn.com/problems/container-with-most-water/ 这道题呢,我的主要思路是这样的,对撞指针嘛,我们肯定要先定义两个变量left和right来指向数组的开始与结尾,然后在定义一常量res来表示存储水的面积,然后左指针与右指针开始碰撞,想取r原创 2020-09-17 17:26:26 · 86 阅读 · 0 评论 -
LeetCode1- 两数之和
传送门:LeetCode1- 两数之和](https://leetcode-cn.com/problems/two-sum/) 这道题算是我开始写算法的第一道题: 执行用时:2 ms, 在所有 Java 提交中击败了99.62% 的用户 内存消耗:39.2 MB, 在所有 Java 提交中击败了23.03% 的用户 public class LeetCode1 { public static int[] twoSum(int[] nums, int target) { //开辟一个m原创 2020-09-17 16:52:45 · 89 阅读 · 0 评论 -
递归
递归(Recursion):自己调用自己。对于递归来说必须有一个出口,让递归结束,这样才能避免死循环 public class test { //求解n的阶乘 public int compute(int number){ if (1==number){ return 1; } else { ...原创 2020-07-13 16:03:48 · 81 阅读 · 0 评论