算法设计与分析
文章平均质量分 50
漫步者TZ
一个想用技术让生活变得更进步、世界变得更美好的人
展开
-
Leetcode 剑指Offer 68-2 二叉树的最近公共祖先
文章目录题目思路代码参考链接题目思路根据p、q在左右子树的情况区分,所以先获取子树的情况,再判断当前节点,是后序遍历树的先序遍历、中序遍历、后序遍历,都是深度优先遍历,所以是从下至上遍历的,所以获取的节点会是深度最大的节点设计一个递归函数,若找到p或q,则返回对应节点,对于任一节点,p、q在左右子树的情况有4种p或q都不在 左右子树,返回 nullp或q不在右子树,返回左孩子p或q不在左子树,返回右孩子左子树和右子树都能找到p或q,返回当前节点,且说明当前节点是最近公共祖先代原创 2021-04-24 19:51:07 · 288 阅读 · 0 评论 -
leetcode k个一组反转链表
leetcode 25给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当k= 2 时,应当返回: 2->1->4->3->5当k= 3...原创 2020-04-15 20:11:03 · 133 阅读 · 0 评论 -
java 冒泡排序
思想:arr[j]从尾部冒泡,把小的元素一步步放置到数组前面package sort;import java.util.Scanner;public class BubbleSort { public static void main(String []args) { Scanner sc=new Scanner(System.in); while(sc.hasNext()...原创 2020-03-19 23:07:37 · 114 阅读 · 0 评论 -
Java 归并排序
package sort;import java.util.*;public class MergeSort { public static void main(String []args) { Scanner sc=new Scanner(System.in); while(sc.hasNext()) { String []str=sc.nextLine()....原创 2020-03-18 10:40:41 · 121 阅读 · 0 评论 -
Java BFS 邻接表实现
邻接表实现:使用vector数组存储节点,每个vector[i]表示当前节点i,里面存储连接到的节点用队列linkedList做广度优先遍历,用LinkedHashSet做访问数组visited,记录访问过的节点并加入未访问的新节点如果Set的大小等于节点数,说明访问完全部节点,退出输入52 3 3 4 4 5 5 3 2 1输出:23145pa...原创 2020-03-17 12:50:03 · 400 阅读 · 0 评论 -
Java 二分查找
package search;import java.util.Scanner;public class BinarySearch { public static void main(String []args) { Scanner sc=new Scanner(System.in); while(sc.hasNext()) { int len=sc.ne...原创 2020-03-16 21:27:38 · 91 阅读 · 0 评论 -
POJ 2386 Lake Counting
输入: 第一行包含两个正整数N和M,表示将一个园子地面分成N*M块方格,N行,M列,接下来的N行描述了园子地面状况,其中‘W’表示积水的水洼,‘.’表示没有积水。N,M<=100。 输出: 仅一个数,表示水洼的总数。 输入示例: 1012 w........ww. .ww...原创 2020-03-14 22:13:32 · 137 阅读 · 0 评论 -
串联所有单词的子串
串联所有单词的子串采用前后两个hashMap,判断单词数目是否相等原创 2020-03-06 23:10:23 · 92 阅读 · 0 评论 -
和为s的连续正数序列
和为s的连续正数序列双指针法,求和sum没必要用公式,只需要对sum一加一减即可原创 2020-03-06 21:28:13 · 115 阅读 · 0 评论 -
最长回文子串
最长回文子串原创 2020-03-05 13:17:40 · 97 阅读 · 0 评论 -
Leetcode 124 二叉树中的最大路径和
文章目录题目思路代码结果参考链接题目思路需要先拿到左右子树的值,才能判断包括根节点的情况,所以采用后序遍历考虑三节点模型,根节点,左节点,右节点,返回的路径,会有如下情况,求所有情况的最大值只返回父节点的值返回左节点 + 父节点的值返回右节点、父节点的值注意:不能返回左节点+父节点+右节点,因为这样就不能和上一层节点形成路径,但是需要做最大值比较代码 int max=Integer.MIN_VALUE; public int maxPathSum(TreeNod原创 2021-05-10 15:05:44 · 62 阅读 · 0 评论 -
Java 二叉树常见算法总结
文章目录递归遍历前序遍历中序遍历后序遍历非递归遍历前序遍历中序遍历后序遍历层序遍历常见应用二叉树的最大深度最小深度复制二叉树二叉树节点个数二叉树叶子节点个数二叉树中第K层节点的个数销毁二叉树反转二叉树或二叉树的镜像两棵二叉树是否互为镜像判断二叉树是否对称二叉树中和为某一值的路径二叉搜索树的第k个节点判断两个二叉树是否相等检查是否为二叉搜索树寻找下一个节点判断完全二叉树递归遍历前序遍历public void preOrder(TreeNode node){ if (node != nul原创 2021-04-21 14:42:13 · 1057 阅读 · 0 评论 -
算法设计题目 解题思路总结
文章目录数组字符串链表二叉树思路步骤类型图数组字符串链表二叉树思路根据题目的数量分布,可以按照先序遍历、后序遍历、中序遍历的、层序遍历的顺序来思考解决方案步骤先序遍历、后序遍历、中序遍历只需要考虑二叉树的三节点模型,即父节点、左孩子、右孩子的三节点模型,依次把父节点、左孩子、右孩子的情况分析清楚,然后依次递归即可类型先序遍历:先考虑当前节点的符合条件,再依次递归左孩子、右孩子后序遍历:先依次递归左孩子、右孩子,再考虑当前节点的符合条件,作判断返回中序遍历:一般涉及有序的节原创 2021-01-31 10:35:24 · 689 阅读 · 0 评论 -
算法设计题 各种数据结构 常用API java
一、数组1.排序正序:Arrays.sort(arr) 自定义排序规则,如倒序:Arrays.sort(arr,cmp) (cmp是实现comparator接口类)原创 2020-09-10 08:12:44 · 272 阅读 · 0 评论 -
Java 快速排序
package sort;import java.util.Scanner;public class QuickSort { public static void main(String []args) { Scanner sc=new Scanner(System.in); while(sc.hasNext()) { int len=sc.nextI...原创 2020-03-16 21:12:17 · 80 阅读 · 0 评论 -
Java 判断有向图是否有环 拓扑排序
拓扑排序import java.util.*; public class Demo1{ public static void main(String[] args) { Scanner sc=new Scanner(System.in); while (sc.hasNext()){ int point=Inte...原创 2020-03-13 22:32:27 · 2136 阅读 · 0 评论 -
无重复字符的最长子串
题目与参考链接问题:暴力法非常简单,但它太慢了(O(n2)*O(n))。那么我们该如何优化它呢?在暴力法中,我们会反复检查一个子字符串是否含有有重复的字符,但这是没有必要的。如果从索引 i到 j - 1j−1 之间的子字符串 s_{ij}已经被检查为没有重复字符。我们只需要检查 s[j]s[j] 对应的字符是否已经存在于子字符串 s_{ij}中。...原创 2020-03-06 21:08:30 · 82 阅读 · 0 评论 -
堆,栈,堆栈的区别
区别原创 2020-03-04 21:48:51 · 100 阅读 · 0 评论 -
动态规划01 入门知识
参考网址原创 2020-03-04 18:07:54 · 87 阅读 · 0 评论