数据结构
文盲青年
天苍苍,野茫茫,女扮男装耍流氓
展开
-
概率题之随机数的生成
例如:函数a可以生成1-4的随机数,现在要求用函数b生成1-11的随机数且基于a来实现:思路:函数a:生成1-4的随机数函数b:生成1-11的随机数我们要用a来实现b,有一点懵,不妨换一下思路,先用b来实现a: public int a() { int x = b();//[1,11] while (x > 4) { x = b(); } return x; }以上代码很简单,只要b原创 2021-11-28 20:12:58 · 634 阅读 · 0 评论 -
合并两个有序数组(leetcode-88)
原题:合并两个有序数组一、直接合并,再排序 public void merge(int[] nums1, int m, int[] nums2, int n) { int i = 0; for(int x : nums2){ nums1[m+i] = nums2[i++]; } Arrays.sort(nums1); }二、双指针 public void merge(int[] nums1原创 2021-11-18 22:44:03 · 581 阅读 · 0 评论 -
最长回文子串(leecode-5)
一、暴力法循环字符串s的所有字符c,一个一个字符的判断:1、首先两个指针m、n开始都指向c,此时最大长度len为1(c自身)2、看c左边有没有与c相同的,有的话m就左移,但是只能移动一回。3、看c右边有没有与c相同的,有的话n右移,也只能移动一回。4、m、n分别左右移动,如果二者相等,则长度+2,继续移动。5、直到移动到头或者移动到没有相等的结束。public int getLongestPalindrome (String A) { char [] chars = A.toC原创 2021-11-17 21:45:00 · 90 阅读 · 0 评论 -
二分法查找
public int search (int[] nums, int target) { if(nums.length==0){ return -1; } int l=0; int r=nums.length - 1;//这里如果没有减1,如果查找的数大于所有数组中所有数,则最后一个会越界 while(l <= r){ int mid= l + (r - l) / 2...原创 2021-11-06 17:25:55 · 75 阅读 · 0 评论 -
利用双向链表实现LRU算法(leetcode146)
class LRUCache { private int capacity; private Map<Integer, Node> cache; private Node head; private Node tail; public LRUCache(int capacity) { this.capacity = capacity; this.cache = new HashMap<>(); }原创 2021-10-31 12:16:52 · 179 阅读 · 0 评论 -
java实现二叉树
public class TreeNode { public int data; public TreeNode left; public TreeNode right; public TreeNode(int data) { this.data = data; }}递归构建二叉树:public class MAIN { public static void main(String[] args) { Tre转载 2021-10-26 13:37:45 · 134 阅读 · 0 评论 -
LeetCode第21题-合并单向排序链表(迭代方式)
该算法为力扣21题: 合并两个有序链表1、首先,我们先回顾一下创建链表的逻辑:链表只暴露了head,于是我们只能根据head去找,找到最后一个节点,在尾部添加。同时又不能影响head,故需要一个临时变量,使用浅拷贝的方式去改变head,为其最后一个节点添加一个值。 public static class ListNode { int val; ListNode next; ListNode() { } List原创 2021-10-26 13:05:42 · 102 阅读 · 0 评论 -
java实现快速排序
public static void quickSort(int[] arr, int l, int r) { if (l >= r) { return; } int i = l, j = r, x = arr[i]; while (i < j) { while (i < j && arr[j] > x) { j--;原创 2021-10-25 23:12:44 · 96 阅读 · 0 评论 -
java实现双向链表
参考这位大神的文章,写的非常好!传送门:java实现双项链表这一篇,说一下双链表的实现,双向链表一定是在单链表的基础上,进行优化,才能成为双链表,关于单链表的文章,可以看下面这个链接:https://blog.csdn.net/weixin_46726346/article/details/107687955所以一些重复的东西就不会再说了,言归正传,我们开始说双向链表;之前说过单链表的结构,我们再来看一下:单链表的查询方式,只能通过顺序遍历一遍才能查询,这也是单链表的一个缺陷,那有没有什么解决转载 2021-10-24 18:46:50 · 245 阅读 · 0 评论 -
堆排序——深入浅出
https://blog.csdn.net/as02446418/article/details/47699547注意完全二叉树有一个性质:最后一个非叶结点是第n/2个结点。转载 2021-03-29 15:53:10 · 105 阅读 · 0 评论 -
从二分查找树到红黑树
https://mp.weixin.qq.com/s/r6foXjNHmU0l_fzrMqxG7Q转载 2021-02-07 14:06:59 · 307 阅读 · 0 评论 -
冒泡排序(python版)
import randomattr = [3, 2, 5, 8, 6, 9, 9, 13, 11, 6]# attr = [random.randint(1, 10) for x in range(0, 10)]print(attr)for i in range(len(attr) - 1): for j in range(len(attr) - 1 - i): if attr[j] > attr[j + 1]: attr[j], attr[原创 2020-11-03 12:27:00 · 250 阅读 · 0 评论 -
python实现十大经典排序算法
python实现十大经典排序算法转载 2020-10-28 12:50:57 · 133 阅读 · 0 评论 -
java二进制补码与原码换算、移位换算>>、>>>
补码 = 原码取反再加1算法110010110是补码,应先减去1变为反码,得10010101;由反码取得源码dao即除符号位外其他为按位取反,得11101010,即十进制数的-106算法2负数补码速算法,由最低位(右)向高位(左)查找到第一个1与符号位之间的所有数字按位取反的逆运算10010110是补码,符号位与最后一个1之间的所有数字(10010110)按位取反,得11101010...原创 2020-09-14 14:59:30 · 1559 阅读 · 0 评论 -
一致性哈希的分析与实现
https://mp.weixin.qq.com/s/M1hpWP9f0VjL4bMjdFS_FA转载 2020-07-21 16:42:55 · 125 阅读 · 0 评论 -
Hash一致性算法是如何解决数据倾斜问题的
https://www.bilibili.com/read/cv5669496转载 2020-07-14 18:03:21 · 685 阅读 · 0 评论 -
什么是红黑树
https://mp.weixin.qq.com/s/eJgjcIF2mdhSYGc6OcBmyA转载 2020-06-18 09:44:17 · 136 阅读 · 0 评论 -
哈希表哪家强?编程语言找你来帮忙
哈希表华山论剑比特宇宙编程语言联合委员会准备举办一次大会,主题为哈希表,给各大编程语言帝国都发去了邀请函。很快就到了大会这一天联合委员会秘书长开场发言:“诸位,为促进技术交流与发展,增强各帝国友谊,联合委员会特设此盛会,感谢诸位的捧场”会场传来一阵鼓掌声······秘书长继续发言:“本次大会的主题是哈希表,人类程序员使用最多的数据容器之一,各大编程语言帝国相信都有实现。今天的大会就围绕哈希表分为几个议题讨论,首先是第一个议题:存储结构与冲突解决”存储结构与冲突解决来自GoLang帝国的ma转载 2020-06-05 14:07:29 · 182 阅读 · 0 评论 -
红黑树解析
参考这位大佬:传送门转载 2020-06-04 14:09:04 · 148 阅读 · 0 评论 -
判断一个整数是奇数
https://mp.weixin.qq.com/s/Rm3tjPjUb3sbzGdsw1U8BA转载 2020-03-17 11:56:49 · 700 阅读 · 0 评论 -
二分搜索只能用来查找元素吗?
https://mp.weixin.qq.com/s/xFPnvlbmS1hVZeZxHXqKuQ转载 2020-03-17 11:17:19 · 185 阅读 · 0 评论 -
概率数据结构---Bloom filter(布隆过滤器)
https://blog.csdn.net/She_lock/article/details/103856260转载 2020-02-18 18:03:48 · 175 阅读 · 0 评论 -
经典面试题:最长回文子串
https://mp.weixin.qq.com/s/ux6VSWAPwgOS32xlScr2kQ转载 2020-01-06 09:27:51 · 213 阅读 · 0 评论 -
Java实现编辑距离算法
https://www.cnblogs.com/DFX339/p/11278402.html转载 2019-12-01 23:16:32 · 280 阅读 · 0 评论 -
10进制转16进制
public class TenToHex { public static void main(String[] args) { System.out.println(toHex(1545645)); } public static String toHex(int n) { StringBuilder builder = new Stri...原创 2018-10-21 14:46:24 · 337 阅读 · 0 评论 -
《红面书生》的算法博客
https://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741374.html转载 2018-10-10 10:34:46 · 237 阅读 · 0 评论 -
两个队列实现栈、两个栈实现队列
一、两个队列实现栈思路由于栈是先进后出,而队列是先进先出,故我们可以将一个含n个元素的队列的前n-1个元素出队,并进入到第一个队列中,这时候第一个队列就只剩最后一个元素了,输出。这便是输出最后一个元素了。示例代码import java.util.LinkedList;import java.util.Queue;public class QueueStack { privat...原创 2018-10-18 17:18:59 · 221 阅读 · 0 评论 -
漫画说动态规划
https://blog.csdn.net/baidu_37107022/article/details/73188963转载 2018-10-15 12:36:04 · 461 阅读 · 0 评论 -
java 实现线性表
线性表(linear list)是我写的第一个数据结构,又叫表,顾名思义,线性的数据结构。(元素之间一对一,除头尾外,每个元素有一个前驱,有一个后继),可以随便插入值,随便删除值。好了,下面我们来实现它。基于顺序存储结构的线性表—顺序表java怎么实现顺序存储结构?很简单,直接用数组。但表的下标从1开始,而数组下标从0开始,故我们写的时候,要注意一下细节。public cl...原创 2018-03-13 20:29:45 · 3559 阅读 · 1 评论 -
浙江大学的网易公开课
http://www.icourse163.org/learn/ZJU-93001?tid=1002019005#/learn/content转载 2018-12-19 08:32:57 · 207 阅读 · 0 评论 -
冒泡排序
public static void bubbleSort(int[] a) { for (int i = 0; i < a.length - 1; i++)//控制躺数 for (int j = 0; j < a.length - 1 - i; j++) { if (a[j] > a[j + 1])...原创 2019-02-28 21:52:11 · 109 阅读 · 0 评论 -
中缀表达式转后缀表达式(计算器实现)
import java.util.Stack;public class CalculateExpression { /** * 中缀表达式转后缀表达式,需要借助栈来存放操作符 * <p> * 1. 遇到的是数字,直接输出 * 2. 遇到的第一个操作符进栈 * 3. 遇到"("进栈 * 4. 遇到其他操作符oper...原创 2019-03-09 17:15:15 · 460 阅读 · 1 评论 -
快速排序、二分法
https://blog.csdn.net/nrsc272420199/article/details/82587933https://blog.csdn.net/nrsc272420199/article/details/82886896转载 2019-03-07 18:29:24 · 713 阅读 · 0 评论 -
快速排序
public class QuickSort2 { public static void main(String[] args) { int[] a = {213, 3, 45, 6, 17, 341, 99}; quickSort(a, 0, a.length - 1); for (int i : a) { Syst...原创 2019-03-15 15:56:23 · 110 阅读 · 0 评论 -
插入排序
public class InsertSort { public static void main(String[] args) { int[] arr = {233, 23, 5, 67, 279, 344, 0}; sort(arr); for (int i : arr) { System.out.print(...原创 2019-03-15 16:33:41 · 89 阅读 · 0 评论 -
简单的认识数据结构
转眼间,大学就要结束了,再不写点东西装一下,读了几年大学,很多人都会有一种若有所失的感觉。 先说说自己吧,作者大二转专业,半路出家,接触到计算机的第一节课就是数据结构,但是当时由于是基于C++语言的,而只是学过一点点VB的我,虽然能够自己看书看懂一些简单的数据结构,但当老师要求用代码实现数据结构时,就直接懵逼了,这一懵,就是几年!(⊙o⊙)…实际是一年多。在我看来,大学可以分为以下几个成长阶...原创 2018-03-13 18:29:03 · 885 阅读 · 0 评论