
数据结构与算法新手班
文章平均质量分 67
dudu0917
这个作者很懒,什么都没留下…
展开
-
环形数组/递归复杂度分析
环形数组 如何实现环形数组 思路: 使用一个putIndex和一个getIndex表示插入的位置和获取的位置,但是这样就要考虑两个指针的追赶情况,如果都是0是代表初始化还是代表已经追赶上了? 增加一个size变量 插入和获取只需要判断size大小即可 public class RingArray { private int[] arr; private int pushi;// end private int polli;// begin private int si原创 2022-05-13 22:18:54 · 180 阅读 · 0 评论 -
归并排序/快排-非递归版本
归并排序 思路: 设置step步长 将数组按步长划分 比如arr[0,1,2,3,4] 开始step = 1; 第一个左组[0] 和 第一个右组[1] 进行merge操作;第二个左组[2] 和 第二个右组[3] 进行merge操作;剩下的不足以划分 将step * 2 , 开始merge新的左组 和 右组,等到step = 4时 此时左组[0,1,2,3] 右组[4] 进行merge操作 判断step >= N 就可以退出循环 public static void mergeSort2(Int原创 2022-05-11 23:25:09 · 85 阅读 · 0 评论 -
大厂必考二叉树算法-递归的深度使用
遍历二叉树 static class TreeNode{ private int data; private TreeNode left; private TreeNode right; public TreeNode(int a) { this.data = a; } public TreeNode addL(int a) { TreeNode left =原创 2022-05-10 23:19:28 · 167 阅读 · 0 评论 -
大厂必考链表算法-反转链表/合并有序K链表
反转链表 Node节点 public static class Node<T> { public T value; public Node next; public Node(T data) { value = data; } public void print() { Node head = this; StringBuffer sb =原创 2022-05-09 22:33:05 · 254 阅读 · 0 评论 -
二分法查找特定数据
二分法 有序数组中找到num 思路: 采用二分法先判断mid位置元素的大小 如果arr[mid] = num 就直接返回 如果arr[mid] < num 就继续向右边找是否还存在 = num的数据, 即设置 L = mid + 1 如果arr[mid] > num 就设置 R = mid - 1, 继续向左边找 public static boolean find(int[] arr, int num) { if (arr == null || arr.length ==原创 2022-05-08 21:15:50 · 294 阅读 · 0 评论 -
前缀和&等概率器
前缀和 问题描述 有一个整数数组,给出数组范围L、R,求L到R之间的数据和 思路 循环L到R之间的数据累加 构造二维数组,里面保存所有可能的L到R的数据累加和 重新构造一个整数数组,后面一个元素保存前面所有元素和自己本身元素之和,计算arr[L,R] = arr[R] - arr[R - L + 1] 方式一 ...原创 2022-05-08 00:54:53 · 419 阅读 · 0 评论 -
简单排序-选择/归并/快排/冒泡/插入
选择排序 思路: 第一层循环代表需要存放最小值得索引 第二层循环找到最小值的索引 交换第一层索引和最小索引的值 public class SelectSort<T extends Comparable<T>> { public static void sort(Comparable[] arr) { for (int i = 0; i < arr.length; i++) { int minIdx = i;原创 2022-05-07 13:05:23 · 558 阅读 · 0 评论 -
位运算-实现位图和计算器
常用的位运算 位运算符 说明 计算 案例 & 与 都是1为1, 否则即为 0 4 & 3 = 0100 & 0011 = 0000 == 0 | 或 有一个为1就是1 4 & 3 =》 0100 | 0011 = 0111 == 7 ^ 异或 不同为1 相同为0 7 & 3 =》 0111 ^ 0011 = 0100 == 4 ~ 取反 二进制的0变成1,1变成0 ~4 = 11111111111111111111111111111011原创 2022-05-06 15:58:29 · 693 阅读 · 0 评论