算法和数据结构
未聞花名丶
这个作者很懒,什么都没留下…
展开
-
【算法】Java常用排序算法,各种排序算法实现LeetCode排序数组
Java中常用排序算法 LeetCode 912. 排序数组:LeetCode 912. 排序数组 常用排序算法时间复杂度 排序算法 平均时间复杂度 选择排序 O(n^2) 插入排序 O(n^2) 冒泡排序 O(n^2) 堆排序 O(nlogn) 归并排序 O(nlogn) 快速排序 O(nlogn) 基础排序 选择排序:选择排序 冒泡排序:冒泡排序 插入排序: 归并排序:归并排序 快速排序: ...原创 2022-05-06 16:37:22 · 470 阅读 · 0 评论 -
【算法】Java实现冒泡排序
冒泡排序 时间复杂度 O(n^2) // 冒泡排序 相邻位置比较,变成递增的 public void bubbleSort(int[] nums) { // 比较n - 1轮即可 for (int i = 0; i < nums.length - 1; i++) { boolean flag = true; for (int j = 0; j < nums.length - 1 - i; j++) {原创 2022-05-06 16:34:49 · 325 阅读 · 0 评论 -
【算法】Java实现归并排序
归并排序 时间复杂度O(nlogn) /** 归并排序,基于分治,时间复杂度O(nlogn) 每次将数组分成两半,然后分别排序,再调用合并两个有序数组方法 */ public void mergeSort(int[] nums, int l, int r) { if (l >= r) return; int mid = (l + r) >> 1; // 取中值点 mergeSort(nums, l,原创 2022-05-06 16:30:52 · 375 阅读 · 0 评论 -
【算法】Java实现选择排序
选择排序原创 2022-04-27 16:45:34 · 351 阅读 · 0 评论 -
【算法】二分查找,LeetCode33. 搜索旋转排序数组题解
二分查找原创 2022-04-25 18:50:15 · 64 阅读 · 0 评论 -
【算法】二叉堆系列,Java优先队列PriorityQueue,滑动窗口及合并k个有序列表的应用
二叉堆 通过二叉堆的结构,维护一个小根堆或者大根堆,从而可以很快的找到第k小或者大的元素 PriorityQueue public class PriorityQueue<E> extends AbstractQueue<E> implements java.io.Serializable { // 可以定义排序规则,默认是小根堆(越小的元素,越往上) public PriorityQueue(Comparator<? super E>原创 2022-04-05 14:42:57 · 640 阅读 · 0 评论 -
【算法】图类基础算法题解,LeeCode997. 找到小镇的法官,LeetCode1791. 找出星型图的中心节点,LeetCode1971. 寻找图中是否存在路径
LeeCode997. 找到小镇的法官 LeeCode997. 找到小镇的法官 class Solution { public int findJudge(int n, int[][] trust) { // indeg = n - 1 // outdeg = 0 int[] indeg = new int[n + 1]; int[] outdeg = new int[n + 1]; for (int[] t :原创 2022-03-30 21:12:30 · 101 阅读 · 0 评论 -
【算法】Java实现LRU Cache 缓存 LeetCode146
LRU (Least Recently Used) Cache 最近最少使用的缓存。 实现思想:借用双链表和map实现,双链表保存实际的值,map用来保存key和链表节点的映射关系。 class LRUCache { int capacity; // 保护节点 Node head; Node tail; Map<Integer, Node> cache = new HashMap<>(); public LRUCache(in原创 2022-03-24 22:11:16 · 994 阅读 · 0 评论 -
LeetCode709. 转换成小写字母,String和StringBuilder效率
String和StringBuilder LeetCode709. 转换成小写字母 String 拼接字符串 class Solution { public String toLowerCase(String s) { String res = ""; for (char c : s.toCharArray()) { if (c >= 'A' && c <= 'Z') res += (原创 2021-12-04 17:22:46 · 138 阅读 · 0 评论