数据结构与算法
基础及高级
kyhoon
如鱼饮水,冷暖自知。
展开
-
整数反转 beat100%
我们通过每次获取整数的最低位作为新数字的最高位,通过每次模10获取最低位,并且将得到的数加到结果变量乘上10 的结果中作为新结果变量,依次类推,这样子最低位将成为结果变量的最高位, 我们一开始将 正负 标识抽离处理并将原数转为正数。以便进行判定是否越界。原创 2023-03-09 20:07:44 · 215 阅读 · 0 评论 -
中心扩散法解回文串问题
中心扩散法解最长回文子串原创 2023-03-08 20:16:21 · 263 阅读 · 0 评论 -
汉明距离的计算
计算两个二进制数 相同位置 不同值 的个数原创 2023-01-30 09:52:32 · 356 阅读 · 0 评论 -
找到所有数组中消失的数字
找到所有数组中消失的数字原创 2023-01-29 11:24:25 · 166 阅读 · 0 评论 -
反转链表的实现
反转链接实现与解析原创 2023-01-14 15:22:40 · 107 阅读 · 0 评论 -
二叉树-前序遍历
递推及迭代实现二叉树的前序遍历原创 2022-11-02 19:51:40 · 369 阅读 · 0 评论 -
双指针-神奇字符串
双指针 解决 神奇字符串原创 2022-10-31 19:51:15 · 147 阅读 · 0 评论 -
链表-单向链表的实现
实现单向链表原创 2022-10-27 19:36:47 · 505 阅读 · 0 评论 -
二分-求整数的平方根
二分法解整数的平方根原创 2022-10-25 16:28:19 · 179 阅读 · 0 评论 -
递归-带重复数字的全排列
递归解决重复数字的全排列问题原创 2022-10-24 17:39:23 · 403 阅读 · 0 评论 -
写一下跳表
手写跳表原创 2022-07-04 11:38:15 · 118 阅读 · 0 评论 -
leetcode爬楼梯
斐波拉契思维解决爬楼梯问题原创 2021-12-22 20:41:34 · 106 阅读 · 0 评论 -
盛最多水的容器
双指针解决容量问题原创 2021-12-22 20:40:56 · 860 阅读 · 0 评论 -
移动零操作
移动非零元素的常规操作原创 2021-12-21 20:26:48 · 96 阅读 · 0 评论 -
写一下位图的实现BitMap
bit数组判断数字是否存在原创 2021-12-20 09:34:53 · 136 阅读 · 0 评论 -
图论基本概念
图的基本概念介绍及遍历方式的代码实现原创 2021-12-16 17:16:41 · 154 阅读 · 0 评论 -
写一下堆排序
手写堆排序原创 2021-12-15 16:59:06 · 656 阅读 · 0 评论 -
写一下哈夫曼树
手写哈夫曼树,是什么,可以做什么,怎么实现原创 2021-12-14 09:13:30 · 161 阅读 · 0 评论 -
讲一讲位图
快速讲位图原创 2021-11-24 16:25:37 · 233 阅读 · 0 评论 -
5.布隆过滤器
布隆过滤器快速讲解原创 2021-11-24 16:18:42 · 577 阅读 · 0 评论 -
4.被讲烂了的散列表
hashmap的基本原理原创 2021-11-24 16:13:21 · 301 阅读 · 0 评论 -
广度优先遍历BFS解决堂兄弟节点问题
在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点。我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 x 和 y 。只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true 。否则,返回 false。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/cousins-in-binary-tree著作原创 2021-05-17 16:30:19 · 182 阅读 · 0 评论 -
讲一讲线性表
线性表可分为逻辑层面和物理层面,物理层面的线性表就是数组和链表,而逻辑层面的有栈和队列原创 2021-05-13 10:27:38 · 103 阅读 · 0 评论 -
算法复杂度
列举一下常见的;O(1)标识常数项复杂度,是最好的时间复杂度,就是你可以看出它只执行常数次的复杂度,不论是1次,两次,还是三次都可以认为是常数项,只要不循环N次就行。它的图示就是一条平行于x轴的线,最低。O(logn) 对数次时间复杂度,这里重点说明一下,是本人认为最不好理解的复杂度计算,最常见的是在一次循环中,判断循环的条件变量是每次是倍数级的增长,.比如i=1;i<n;i=i*2,那么,要达到n,就要要有2的k次>=n的时候才会结束循环,而此时,k最小是2的k次方等于n,也就是k原创 2021-05-12 14:19:53 · 300 阅读 · 0 评论 -
6.写一下二叉树的遍历
先序遍历,中序遍历,后序遍历,层序遍历原创 2021-11-25 20:05:23 · 123 阅读 · 0 评论 -
3.快速排序
//总的来说就是每次以基准值为标准进行比较//每一轮的比较就是首先从后往前对数组的每一个元素和基准值进行比较,//如果数组的元素比基准值小,则交换位置//此时开始从前往后进行比较,如果数组的元素比基准值大,则交换位置//最终的效果就是每一轮循环过后,基准值的左边都比基准值小,基准值的右边都比基准值大//递归到最后只剩一个元素了,就是有序的了 public void quicklySort(int[] data,int left,int right){ //取基准值(这里可优化,.原创 2021-03-23 20:17:22 · 103 阅读 · 0 评论 -
写一下冒泡排序
冒泡排序的讲解代码原创 2021-12-07 10:09:18 · 714 阅读 · 0 评论 -
2.归并排序
//两个有序数组合并成一个总的有序数组 public static void merge(int[] data ,int left,int mid ,int right){ int[] tmp=new int[data.length]; int leftPoint=left; int rightPoint=mid+1; int loc=left; //分别对两个有序数组的首元素进行比较,按从小到大排序的逻辑 .原创 2021-03-19 17:38:46 · 93 阅读 · 0 评论 -
1.希尔排序
public static void main(String[] args) { int[] shellArr={8,5,9,6,7,4,1,2,3,0}; int arrLen=shellArr.length; int[] distanArr=new int[arrLen/2]; //获取增量数组 for(int i=0;i<distanArr.length;i++){ arrLen=a...原创 2021-03-19 15:36:37 · 83 阅读 · 0 评论 -
写一下插入排序
插入排序原创 2021-12-04 09:22:32 · 220 阅读 · 0 评论 -
递归的优化
循环,缓存中间结果,尾递归原创 2021-12-03 10:17:27 · 759 阅读 · 0 评论