
leetCode
Skydddd
这个作者很懒,什么都没留下…
展开
-
Leetcode DP系列:最长公共子序列
DP的定义状态转移方程比较当前串的最后一个字符,相等则LCS+1也就是dp[i] = dp[i-1][j-1] + 1;否则,在之前各自上个dp中选最大的dp[i] = Max(dp[i-1][j],dp[i][j-1])初始条件dp[0][j]和dp[i][0]都为0,符合数组初始化条件,所以不用管它。第一次写的时候错误循环中的i ,j...原创 2020-04-13 23:50:03 · 228 阅读 · 0 评论 -
Leetcode Top 100:最长上升子序列
法一:明显动态规划法二:贪心加二分查找tail[i]代表长度为i+1的上升序列最小的末尾记住,这个代码只保证末尾最小,也就是长度最长最终数组不是最优结果,只求长度如果找不到,也就是新数大于tail,则最后循环退出为rightres是最长的个数这里有个tr...原创 2020-03-15 22:43:07 · 388 阅读 · 0 评论 -
LeetCode Top100 合并二叉树
递归解法:// 不修改原二叉树做法class Solution { public TreeNode mergeTrees(TreeNode t1, TreeNode t2) { if(t1 == null || t2 == null) return t1 == null ? t2 : t1; // 不修改原...原创 2020-03-14 23:42:05 · 213 阅读 · 0 评论 -
Leetcode Top 100 最短无序子数组
比较难数组类的左右扫描法,须记住思路:同时从前往后和从后往前遍历,分别得到排序数组的右边界和左边界;寻找右边界:从前往后遍历的过程中,用max记录遍历过的最大值,如果max大于当前的nums[i],说明nums[i]的位置不正确,应该属于需要排序的数组,因此将右边界更新为i,然后更新max;这样最终可以找到需要排序的数组的右边界,右边界之后的元素都大于max;寻找左...原创 2020-03-12 19:03:29 · 262 阅读 · 0 评论 -
LeetCode Top100:回文串 & 整数反转
解法一:int转string然后双指针注:一、String转int有两种方式(1)Integer.parseInt(str)二、int转String有三种方式(1)num + “”(2)String.valueOf(num)(3)Integer.toString(num)(2)Integer.valueOf(str).intValue()class ...原创 2020-03-11 22:48:40 · 219 阅读 · 0 评论 -
Leetcode Top 100:合并两个有序链表
主要注意定义的两个辅助变量/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public List...原创 2020-03-11 21:39:22 · 188 阅读 · 0 评论 -
每日一题:LeetCode1013 将数组分为相等的一部分
class Solution { public boolean canThreePartsEqualSum(int[] A) { int sum = 0; //int sum = Arrays.stream(A).sum() for(int i : A) sum += i; if(sum % 3 != 0) ...原创 2020-03-11 19:25:31 · 166 阅读 · 0 评论 -
二叉树系列:二叉树的直径
这个题主要是思路要转换成先求二叉树的左右子树的最大深度,定义叶子节点深度为1,则在每次递归过程中更新最大直径最大直径即为某个节点的左子树最大深度+右子树最大深度。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; *...原创 2020-03-10 18:51:27 · 393 阅读 · 0 评论 -
LeetCode Top100 : 两数相加
leetcode 2将当前结点初始化为返回列表的哑结点。将进位 carrycarry 初始化为 0。将 p和 q分别初始化为列表 l1和 l2的头部。遍历列表 l1l1 和 l2l2 直至到达它们的尾端。将 x设为结点 p的值。如果 p已经到达 l1的末尾,则将其值设置为 0。将 y设为结点 q的值。如果 q已经到达 l2的末尾,则将其值设置为 0。设定 sum =...原创 2020-03-03 17:30:36 · 187 阅读 · 0 评论 -
LeetCode Top100系列(11):下一个排列
参考文章:https://mp.weixin.qq.com/s/uKyB1FWXtviWd5zgcxS4yQ 首先,我们观察到对于任何给定序列的降序,没有可能的下一个更大的排列。 例如,以下数组不可能有下一个排列: [9, 5, 4, 3, 1]此题的目的是求一组元素可以组成的所有数字中比这组元素组成的数字下一大的一组序列...原创 2020-03-03 15:50:46 · 202 阅读 · 0 评论 -
Datawale编程Day5--二叉树
第五个任务(3天)二叉树实现一个二叉查找树,并且支持插入、删除、查找操作实现查找二叉查找树中某个节点的后继、前驱节点实现二叉树前、中、后序以及按层遍历并完成leetcode上的验证二叉搜索树(98)及二叉树 层次遍历(102,107)!(选做)(保留往期第四天任务)注:这个跟下面的习题有重复堆实现一个小顶堆、大顶堆、优先级队列 实现堆排序利用优先级队列合并 K 个有...原创 2019-03-11 20:31:46 · 335 阅读 · 0 评论 -
Datawhale 编程第五期 Day6--图
第六个任务(2天)图实现有向图、无向图、有权图、无权图的邻接矩阵和邻接表表示方法实现图的深度优先搜索、广度优先搜索 实现 Dijkstra 算法、A* 算法实现拓扑排序的 Kahn 算法、DFS 算法对应的 LeetCode练习题 Number of Islands(岛屿的个数) 英文版:Loading... 中文版:力扣Valid Sudoku(有效的数独) 英文版:...原创 2019-03-13 21:43:15 · 180 阅读 · 0 评论 -
Datawhale 编程第五期 Day2--栈和队列
package Day2;import java.util.Stack;public class Stack_020 { /** * * @param s * @return */ public boolean isValid(String s) { Stack<Character> stack = new...原创 2019-03-03 22:52:11 · 142 阅读 · 0 评论 -
Datawhale 编程第五期 Day4--Hash
LeetCode.344.Reverse Stringpublic class Solution { public String reverseString(String s) { char[] word = s.toCharArray(); int i = 0; int j = s.length() - 1; whi...原创 2019-03-08 21:54:33 · 227 阅读 · 0 评论 -
Datawhale 编程第五期 Day1--数组与链表
1.数组题目1 leetcode 15.Three Sum 参见:https://leetcode-cn.com/problems/3sum/comments/思路:可暴力搜索,三个循环,但时间复杂度是O(n^3),而且不好去重,这里思路是先排序,然后在化为两数之和,且有一些排重加快搜索速度的小技巧,整体复杂度为O(n^2)。package Day1;import java.u...原创 2019-02-28 21:52:49 · 276 阅读 · 0 评论