图-最短路径-Dijkstra算法
package com.jiucaiyuan.net.algrithm.graph; import java.util.HashMap; import java.util.HashSet; import java.util.Set; /** * Dijkstra算法 * 适用于:可以有权值为负数的边,但是不能有累加为负数的环的无向图,指定一个出发点,计算到所有节点的最短路径算法 * * @Author jiucaiyuan 2022/4/14 21:36 * @mail services@jiucaiyuan.net */ public clas...图-最小生成树-Prim算法
package com.jiucaiyuan.net.algrithm.graph; import java.util.Comparator; import java.util.HashSet; import java.util.PriorityQueue; import java.util.Set; /** * 图的Prim排序算法(p算法) * 适用于:无向图; * 作用:生成最小生成树 * 最小生成树:保障节点连通性的同时权值总合最小 * 思路:解锁最小的边,相邻的节点是解锁的节点,再找相邻的边,从解锁的边中找最小权重的边(这个边两个节点必有不在解锁...图-最小生成树-Kruskal算法
package com.jiucaiyuan.net.algrithm.graph; import com.jiucaiyuan.net.algrithm.set.UnionFindSet; import java.util.*; /** * 图的Kruskal排序算法(k算法) * 适用于:无向图; * 作用:生成最小生成树 * 最小生成树:保障节点连通性的同时权值总合最小 * 思路:边权值排序,从小到大逐个增加,是否行程环,如果形成环,不要,如果未生成,继续,直到所有的边处理完毕(用到并查集) * 是否形成环判断:这个边链接的两个节点是否在同一个集...算法-leecode46-全排列
package com.jiucaiyuan.net.question; import java.util.ArrayList; import java.util.List; /** * * 46.全排列 * * 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 * * @Author jiucaiyuan 2022/4/14 00:00 * @mail services@jiucaiyuan.net */ class FullPermutation { public static L...算法-leecode164-最大间距
package com.jiucaiyuan.net.question; import java.util.Arrays; /** * 给定一个无序的数组 nums,返回 数组在排序之后,相邻元素之间最大的差值 。如果数组元素个数小于 2,则返回 0 。 * <p> * 您必须编写一个在「线性时间」内运行并使用「线性额外空间」的算法。 * <p> * 示例1: * <p> * 输入: nums = [3,6,9,1] * 输出: 3 * 解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和...算法-链表-找两个单项链表首个相交节点
package com.jiucaiyuan.net.algrithm.linked; import java.util.HashSet; import java.util.Set; /** * <pre> * 【问题】找到两个单项链表第一个相交节点 * 【解题思路】 * case1:两个无环链表相交 * 把长链表长出来部分先走完,然后两个链表一起走,如果发现两个链表当前节点相同,则该节点即是所找 * case2:两个有环链表相交 * 入环节点是否相同 * 相同:按照两个无环链表的查找思路,以入环节...算法-链表-复制带随机指针的链表
package com.jiucaiyuan.net.algrithm.linked; import java.util.HashMap; /** * 【问题】复制带有随机指针节点的链表 * 【要求】时间复杂度O(N),空间复杂度O(1) * 【思路】如果不是空间复杂度O(1)的限制,可以使用Map,暂存新老节点之间的关系, * 然后再补齐rand字段,但是有O(1)限制,所以在克隆出新节点时,放到该节点之后, * 变成注入这个结构:1——>1`——>2——>2`——>3——>3`——>4——>4`——>5——&g...算法-链表-是否为回文
package com.jiucaiyuan.net.algrithm.linked; import java.util.Stack; /** * 【问题】给定一个单项链表的头结点head,请判断该链表是否是回文结构 * 【例子】 * 1——>2——>1,返回true * 1——>2——>2——>1,返回true * 15——>6——>15,返回true * 1——>2——>3,返回false * 【要求】时间复杂度O(N),空间复杂度O(1) * 【思路】快慢指针,快指针走到末尾,慢指针走到终点...算法-基数排序
package com.jiucaiyuan.net.algrithm.sort; import java.net.InetSocketAddress; /** * <pre> * 基数排序 * 根据数据特点进行排序,而非基于比较 * 时间复杂度O(N*logN) 空间复杂度O(1) * </pre> * Created by jiucaiyuan on 2022/4/1. */ public class RadixSort { public static void radixSort(int[] arr) {...算法-堆排序扩展排序几乎有序数组
package com.jiucaiyuan.net.algrithm.sort; import java.util.PriorityQueue; /** * <pre> * 堆排序扩展 * 一个几乎有序的数组, * 几乎有序是指,如果把数组排好顺序的话, * 每个元素移动的距离可以不超过k,这个k相对于数组来说比较小, * 请选择合适的排序算法针对这个数组进行排序 * * 时间复杂度O(N*logk) 空间复杂度O(k) * * </pre> * Created by jiucaiyuan ...算法-堆排序
package com.jiucaiyuan.net.algrithm.sort; /** * <pre> * 堆排序 * 数组表示二叉树[0,1,2,3,4,5,6] 下标i的左子节点是2*i+1 ,右子节点是 2*i+2 , 父节点是 (i-1)/2 * 大根堆:以i为头的整棵树,最大值是i * 小根对:以i为头的整棵树,最小值是i * 优先级队列结构就是堆结构 * 时间复杂度O(N*logN) 空间复杂度O(1) * </pre> * Created by jiucaiyuan on 2...算法-插入法排序
package com.jiucaiyuan.net.algrithm.sort; /** * <pre> * 插入法排序 * i从0~N-1 * 处理0~i位置上有序,检查i-1和i是否有序,如果没有,交换,再检查i-2和i-1是否有序 * (效果就是当前i个元素往前找,找到合适自己的位置) * 排序结果是升序数组 * 时间复杂度O(N^2) 空间复杂度O(1) * * 数据状况不同,时间复杂度不同 * 最差的情况 7 6 5 4 3 2 1 时:时间复杂度O(N^2) 空间复杂度O(1) * 最好的情况 1 2 3 ...算法-冒泡法排序
package com.jiucaiyuan.net.algrithm.sort; /** * 冒泡法排序 * 循环待排序数组,如果前面数比后面数大,交换, 循环完一次最后一位是最大数,下次处理0~N-2个数 * 排序结果是升序数组 * 时间复杂度O(N^2) 空间复杂度O(1) * * @Author jiucaiyuan 2022/3/25 21:48 * @mail services@jiucaiyuan.net */ public class BubbleSort { public static void bubble...算法-选择法排序
package com.jiucaiyuan.net.algrithm.sort; /** * 选择法排序 * 循环待排序数组,i~N-1位置,每次循环找到最小值放到i位置上,然后i++,再次找最小值 * 排序结果是升序数组 * 时间复杂度O(N^2) 空间复杂度O(1) * * @Author jiucaiyuan 2022/3/25 21:48 * @mail services@jiucaiyuan.net */ public class SelectSort { public static void selectionS...算法-逆序对(归并思路)
package com.jiucaiyuan.net.question; /** * <pre> * 一个数组arr中,如果左边的数,比右边的数大,则这两个数组成一个逆序对(不一定相邻),找出数组中所有逆序对 * 采用归并排序的思路进行改进实现 * 时间复杂度O(N*logN) * </pre> * * @Author jiucaiyuan 2022/3/30 23:01 * @mail services@jiucaiyuan.net */ public class FindReversePair { ...算法-小和问题(归并思路,O(N*logN))
package com.jiucaiyuan.net.question; /** * <pre> * 一个数组arr的小和=所有位置上的值,左侧比概述小的和,就是该数组的小和 * 本示例是解法2 * * 解法1.暴力解题,循环处理所有数组的数,找到左侧比所处理的数小的加入结果和中 * 时间复杂度O(N^2) * * 解法2.转化为循环数组所有数,找出右侧比他大,即产生当前数加入到小和中 * 求右边比arr[i]大,可以转化为归并思路处理 * 划分左右两个进行排序,然后merge,在merge过程中,如果右侧...算法-43.字符串相乘
package com.jiucaiyuan.net.question; /** * @Author jiucaiyuan 2022/3/22 21:59 * @mail services@jiucaiyuan.net */ public class TwoStrMultiply { /** * v2 leeCode上学的,确实方法好 * https://leetcode-cn.com/problems/multiply-strings/solution/zi-fu-chuan-xiang-cheng-by-leetcode-solu...算法-kmp
package com.jiucaiyuan.net.algrithm.sum; /** * Knuth-Morris-Pratt * * */ class Kmp { /** * kmp算法 * @param haystack * @param needle * @return */ public static int strStr(String haystack, String needle) { int n = haystack.length(), m = ...算法——字符串转化为32位有符号整数atoi()
package com.jiucaiyuan.net.algrithm.sum; /** * 将一个字符串转化为32位有符号整数,(类似C/C++中的atoi函数) * * @author jiucaiyuan on 2022/3/5. */ public class MyAtoi { public static int myatoi(String s) { char[] chars = s.toCharArray(); int len = chars.length; //去掉空格的情况 ...算法——荷兰国旗(数组分区)
package com.jiucaiyuan.net.algrithm.sort; /** * 问题(荷兰国旗问题):给定一个数组arr,和一个数num,请把小于等于num的数放在数组的左边, * 大于num的数放在数组的右边,要求额外空间复杂度O(1),时间复杂度O(N) * * Created by jiucaiyuan on 2022/3/5. */ public class SplitArrayHeLan { /** * less为小的区域最右侧 * more为大的区域最左侧 * i是扫描整个数组 *...日历
个人资料

diaba 寻求合作请留言或联系mail: services@jiucaiyuan.net
链接
最新文章
存档
- 2025年4月(17)
- 2025年3月(25)
- 2025年2月(20)
- 2025年1月(2)
- 2024年10月(1)
- 2024年8月(2)
- 2024年6月(4)
- 2024年5月(1)
- 2023年7月(1)
- 2022年10月(1)
- 2022年8月(1)
- 2022年6月(11)
- 2022年5月(6)
- 2022年4月(33)
- 2022年3月(26)
- 2021年3月(1)
- 2020年9月(2)
- 2018年8月(1)
- 2018年3月(1)
- 2017年3月(3)
- 2017年2月(6)
- 2016年12月(3)
- 2016年11月(2)
- 2016年10月(1)
- 2016年9月(3)
- 2016年8月(4)
- 2016年7月(3)
- 2016年6月(4)
- 2016年5月(7)
- 2016年4月(9)
- 2016年3月(4)
- 2016年2月(5)
- 2016年1月(17)
- 2015年12月(15)
- 2015年11月(11)
- 2015年10月(6)
- 2015年9月(11)
- 2015年8月(8)
分类
热门文章
- SpringMVC:Null ModelAndView returned to DispatcherServlet with name 'applicationContext': assuming HandlerAdapter completed request handling
- Mac-删除卸载GlobalProtect
- java.lang.SecurityException: JCE cannot authenticate the provider BC
- MyBatis-Improper inline parameter map format. Should be: #{propName,attr1=val1,attr2=val2}
- Idea之支持lombok编译
标签
最新评论
- logisqykyk
Javassist分析、编辑和创建jav... - xxedgtb
Redis—常见参数配置 - 韭菜园 ... - wdgpjxydo
SpringMVC:Null Model... - rllzzwocp
Mysql存储引擎MyISAM和Inno... - dpkgmbfjh
SpringMVC:Null Model... - tzklbzpj
SpringMVC:Null Model... - bqwrhszmo
MyBatis-Improper inl... - 乐谱吧
good非常好 - diaba
@diaba:应该说是“时间的度量依据”... - diaba
如果速度增加接近光速、等于光速、甚至大于...
最新微语
- 在每件事情上花费的东西,就是生命的一部分,而我们花费的这些东西要求立即得到回报,或者在一个长时间以后得到回报。
2025-01-23 15:46
- 诺曼·文森特说:“并不是你认为自己是什么样的人,你就是什么样的人。但是你的思想是什么样,你就是什么样的人。”
2025-01-23 15:44
- 从今天起,做一个幸福的人。喂马,砍柴,(思想)周游世界
2022-03-21 23:31
- 2022.03.02 23:37:59
2022-03-02 23:38
- 几近崩溃后,找到解决方法,总是那么豁然开朗!所以遇到问题要坚持!
2018-07-18 10:49