个人原创--算法总结
该专栏主要记录个人学习算法过程中的一些总结。
charliejohn
Charlie的博客
展开
-
课程学习--算法总结 图论算法(第4期)--最短路径--迪杰斯特拉(Dijkstra)Java描述
最短路径-迪杰斯特拉算法 Java描述原创 2022-06-23 14:31:54 · 250 阅读 · 1 评论 -
课程学习--算法总结 图论算法(第3期)--图的遍历
图的遍历 深度优先及广度优先之Java实现原创 2022-04-28 16:41:16 · 880 阅读 · 0 评论 -
课程学习--算法总结 图论算法(第2期)--图的存储
Java 之用邻接矩阵 邻接表存图原创 2022-04-27 17:47:51 · 188 阅读 · 0 评论 -
课程学习--算法总结:编程基础(第1期)--ACM模式基本输入输出
一、 基本定义import java.util.*;import java.io.*;/** * @className: Main * @description: ACM模式相关模板 * @author: Charlie * @create: 2022/4/25 10:56 */public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(Sys原创 2022-04-25 11:35:14 · 143 阅读 · 0 评论 -
课程学习--算法总结 图论算法(第1期)--理论基础
一、 图论图论 (Graph theory) 是数学的一个分支,图是图论的主要研究对象。图 (Graph) 是由若干给定的顶点及连接两顶点的边所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系。顶点用于代表事物,连接两顶点的边则用于表示两个事物间具有这种关系。图的类型二、 常用类型有向图无向图有环图赋权图(如果这些权都是正实数,就称为正权图)其他类型混合图(即有向又无向)多重图(有平行边,两节点之间有两条边)线图(无平行边)简单图(线图并且是无环图)多重图(有自环或重原创 2022-04-20 10:38:03 · 826 阅读 · 0 评论 -
课程学习--算法总结:数组专题(第3期)--滑动窗口
课程学习–算法总结:数组专题(第3期)–滑动窗口public int totalFruit(int[] fruits) { int left = 0; int right = 0; Counter counter = new Counter(); int res = Integer.MIN_VALUE; for (; right < fruits.length; right++) { // 滑动右窗 counter.add(f原创 2022-03-03 16:50:13 · 130 阅读 · 0 评论 -
课程学习--算法总结:数组专题(第2期)--双指针
课程学习–算法总结:数组专题(第2期)–双指针一、 快慢指针int fast = 0;int slow = 0;for (; fast < nums.length; fast++) { if (nums[fast] != val) { nums[slow] = nums[fast]; slow++; }}return slow;二、 左右指针int left = 0;int right = nums.length - 1;int原创 2022-03-03 15:59:02 · 124 阅读 · 0 评论 -
课程学习--算法总结:数组专题(第1期)—二分查找
课程学习–算法总结:数组专题(第1期)—二分查找一、 二分查找的前提有序,无重复二、 二分查找四要素mid赋值(取小二分)mid = left + ((right - left) >> 1);while条件左闭右闭(包含right)左闭右开(不包含right)right初始值左闭右闭:length-1,左闭右开:lengthright赋值左闭右闭:mid-1(才能跳出循环)左闭右开:mid返回值-1(没有找到)mid+1(差一步找到,但已跳出原创 2022-03-03 14:01:23 · 129 阅读 · 0 评论 -
课程学习--算法总结:时空复杂度(第2期)--常见排序算法的时空复杂度
常见排序算法的时空复杂度原创 2022-02-07 17:16:46 · 628 阅读 · 0 评论 -
课程学习--算法总结:时空复杂度(第1期)
时间复杂度和空间复杂度概述原创 2022-02-07 17:15:05 · 179 阅读 · 0 评论 -
课程学习--算法总结:时空复杂度(第1期)--时间复杂度和空间复杂度
时间复杂度和空间复杂度原创 2022-01-19 20:56:09 · 232 阅读 · 0 评论 -
课程学习--算法总结:二叉树(第1期)--完全二叉树(为什么是2n+1?)
二叉树—完全二叉树子节点编号证明(为什么2n+1)一、 左子树求证:完全二叉树中任何一层的最左节点的编号为n,则其左子节点编号为2n+1,其右子节点编号为2n+2(编号从0开始)。证明:因为完全二叉树第n层的节点数:2^(n-1)所以第n层最左边的节点编号:2^(n-1)-1第n层最左边节点的左子树节点编号(即第n+1层最左边的节点编号):2^(n)-12*(2^(n-1)-1)+1 = 2^(n)-1所以完全二叉树中任何一层的最左节点的编号为n,则其左子节点编号为2n+1,其右子节原创 2021-11-17 14:36:43 · 953 阅读 · 0 评论 -
课程学习--算法总结:动态规划(第2期)--01背包
动态规划–01背包一、 问题描述有N件物品和⼀个最多能背重量为V 的背包。第i件物品的重量是v[i],得到的价值是w[i] 。每件物品只能⽤⼀次,求解将哪些物品装⼊背包⾥物品价值总和最⼤。二、 分析步骤这里我们利用Carl哥的动规五部曲。确定dp数组及其下标的含义i:第几个物品j:背包容量dp[i][j]:拿到第i个物品时,容量为j的背包内,物品价值总和的最大值。列举推导dp数组确定递推公式dp数组初始化初始化一般考虑dp[i][0]和dp[0][j]。如果背包容量j为0的话原创 2021-11-14 22:46:34 · 271 阅读 · 0 评论