算法
奋斗的蜗牛666
a young man with dreams.
展开
-
路径算法Dijistra,Floyd,Bellman-ford,spfa
对图论路径算法代码总结原创 2023-02-23 15:31:34 · 461 阅读 · 0 评论 -
十大排序算法
十大排序算法原创 2023-02-09 14:49:03 · 91 阅读 · 0 评论 -
滑动窗口模板
class Solution: def problemName(self, s: str) -> int: # Step 1: 定义需要维护的变量们 (对于滑动窗口类题目,这些变量通常是最小长度,最大长度,或者哈希表) x, y = ..., ... # Step 2: 定义窗口的首尾端 (start, end), 然后滑动窗口 start = 0 for end in range(len(s)): // wh.原创 2021-12-08 16:14:26 · 723 阅读 · 0 评论 -
二分查找超级好的模板-清晰
算法模板原创 2021-11-23 20:28:11 · 198 阅读 · 0 评论 -
leetcode-1100. 长度为 K 的无重复字符子串
给你一个字符串S,找出所有长度为K且不含重复字符的子串,请你返回全部满足要求的子串的数目 /* 通用模板 */ public static int numKLenSubstrNoRepeats(String s, int k) { int n = s.length(); int left = 0; int right = 0; int ans = 0; char[] nums = ne...原创 2021-12-06 20:31:42 · 358 阅读 · 0 评论 -
leetcode-并查集-P547省份数量+P685冗余连接
public class P547省份数量 { private class UnionFind{ int count; int[] parent; public UnionFind(int n){ this.count=n; this.parent=new int[n]; for (int i = 0; i < n; i++) { par.原创 2021-11-19 16:19:27 · 328 阅读 · 0 评论 -
leetcodeP695岛屿的最大面积
/* DFS 访问到一个岛屿,扩散记录面积,将岛屿设置为海,下次不会再访问到这个岛屿 */ public int maxAreaOfIsland(int[][] grid) { int n = grid.length; int m = grid[0].length; int ans=0; for (int i = 0; i < n; i++) { for (int j = 0; ...原创 2021-11-18 20:20:29 · 174 阅读 · 0 评论 -
拓扑排序-课程表
leetcode P201 P210public class P201课程表 { List<List<Integer>> edges; // 邻接表,通过节点的索引,能找到该节点的后续节点 int[] indge; // 入度 /** * 拓扑排序:作用:检测有向图是否有环,得到一个拓扑序 检测无向图是否有环,使用并查集 * * @param numCourses * @param prerequisites原创 2021-11-18 19:42:43 · 513 阅读 · 0 评论 -
并查集模板
public class UnionFind { // 记录父节点,每个联通节点通过这个连接 private int[] parent; // 连通分量,总共有多少个是连通的 private int count; /* 构造函数,n 为图的节点总数 */ public UnionFind(int n) { // 一开始互不连通 this.count = n; // 父节点指针初始指向自己 p.原创 2021-11-18 19:39:49 · 434 阅读 · 0 评论 -
leetcode1206 跳跃表的实现 down+right 模式
/* 跳跃表的实现 75+68 */ static class Skiplist { class Node { int val; Node right,down; public Node(Node r, Node d, int val) { right = r; down = d; thi...原创 2021-01-14 17:23:48 · 193 阅读 · 0 评论 -
二叉树中和为某一值的路径
package June;import java.util.ArrayList;public class 二叉树中和路径 { /* 看了别人的代码,自己写注释,理解的。 * 思路:逐个遍历到最后一个节点,过程记录路径是否相等,若相等则加入到总的大队列, * */ //总的大队列,记录每一个符合条件的小队列 //这里不能用static修饰, private A...原创 2019-06-23 21:16:31 · 148 阅读 · 0 评论 -
数组中出现次数超过一半的数字
package June;public class 数字次数超过一半 { /* 参考别人写的代码,然后自己理解再敲一遍的。 * 数组中有一个数字出现的次数超过数组长度的一半, 请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。 * 由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 * 1、直接法:先排序,取中位数...原创 2019-06-19 18:20:58 · 105 阅读 · 0 评论 -
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
思路:判断root1是否包含root2,则从大树根节点开始遍历,与小树的根节点比较,如果相等则继续往大树和小树的左右子节点进行判断,如果有符合的部分这就是包含了子结构。/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; p...原创 2019-06-15 12:23:59 · 116 阅读 · 0 评论 -
反转链表
/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*///思路:两个节点两个节点依次从前到后反转断开遍历,1>2>3>4>5//第一次遍历后是: 1<2 3>4&...原创 2019-06-15 13:24:06 · 77 阅读 · 0 评论 -
栈的压入、弹出序列
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路:借用一个辅助的栈,遍历压栈顺序,先讲第一个放入栈中,这里是1,然后判断栈顶元素是不...原创 2019-06-15 16:01:16 · 93 阅读 · 0 评论 -
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
package June;import java.util.Arrays;import java.util.Comparator;/* * 单个元素里的数,不能换位置 * 将数组每个元素转化为字符串,使用Array重写排序方法排序;使用冒泡排序 * 例如: 2 21 221>212 则21排在2面前 */public class 数组排成最小数 { publ...原创 2019-06-17 09:53:45 · 1192 阅读 · 0 评论 -
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
递归方法图示:package June;public class 链表递增合并 {// 注意:此时并没有说明哪一个链表比较短// 递归方式public ListNode Merge(ListNode list1, ListNode list2) {if(list1==null) return list2;if(list2==null) return ...原创 2019-06-17 13:48:04 · 191 阅读 · 0 评论 -
统计一个数字在排序数组中出现的次数。
package June;public class 统计数在排序数组中出现次数 { public int GetNumberOfK(int[] array, int k) { /* //最简单,最没效率算法,一次循环遍历 int count=0; for(int i=0;i<array.length;i++){ if(array[i]==k){ count++...原创 2019-06-18 18:23:09 · 2587 阅读 · 0 评论 -
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
注意:原来的stack栈不能pop修改,可以用一个新的栈,先存出去的元素,取到最小值后再放回原来的第一个栈import java.util.Stack;public class Solution {Stack<Integer> stack1=new Stack<Integer>();Stack<Integer> sta...原创 2019-06-13 17:38:45 · 269 阅读 · 0 评论