![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 56
cz20010101
这个作者很懒,什么都没留下…
展开
-
实现Hash表(五)----换一种方式实现hash表
实现Hash表(五)----换一种方式实现hash表配合前置文章食用更佳,传送门如下:问题描述之前文章中讲到的hash算法实现很复杂,我们可以换其他方式来实现hash表,来降低其复杂度。一种和链表结合的实现方式其实就是另一种get_valid_index映射算法不同的算法主要是在第一映射为index时和处理冲突时不同创建一个list,每个节点用于存储链表头根据key求得index第一种情况:对应的index为空—直接插入第二种情况:对应的index已经有值(注意这是链表头原创 2021-12-26 21:14:07 · 156 阅读 · 0 评论 -
实现Hash表(四)----完成hash表中的删除操作
实现Hash表(四)----完成hash表中的删除操作配合前置文章食用更佳,传送门如下:问题描述目前增删改查我们已经完成了增、改、查,还差"删",实现是否是通过get_valid_index获取对应的index,之后将对应的数据变为None就行了呢?问题分析当然前面我都那么说了吗,答案肯定是no…为什么呢?考虑如下几个问题:1.删除了元素之后,假如只是将其置空,get_valid_index是否可以正常工作?不可以,冲突时会影响后续的搜索,考虑序列A x B none x代表该元素被删除原创 2021-12-26 21:11:51 · 342 阅读 · 0 评论 -
实现Hash表(三)----实现python中的字典
用hash表实现python的字典。原创 2021-12-26 21:10:56 · 396 阅读 · 0 评论 -
实现Hash表(二)----处理index冲突问题
实现Hash表(二)----处理index冲突问题配合前置文章食用更佳,传送门如下:问题描述在上一篇文章中,我们已经实现了自己的hash表结构,但是当两个key映射同一个value时,就会发生冲突,我们应该对冲突进行处理,使得发生冲突时也可以正常添加和删除。解决办法这里我们采用最简单的方法,实际算法可能要比这个复杂得多,但是原理是相同的解决办法:当冲突发生的时候,向后遍历,找到第一个为None的位置,返回对应的index所以在计算index的时候,会遇到如下几种情况:1. index所在位置原创 2021-12-26 21:10:13 · 412 阅读 · 0 评论 -
实现Hash表(一)----手写一个简单hash表
hash表的简单实现,python实现。原创 2021-12-26 21:09:09 · 328 阅读 · 0 评论 -
杨辉三角java实现
杨辉三角题目描述给定一个非负的整数numRows,生成杨辉三角的钱numRows行。e.g. 输入:5输出:[1][1, 1][1, 2, 1][1, 3, 3, 1][1, 4, 6, 4, 1]分析规律:1.三角形的两边都是12.当前元素为:斜上方和上方元素之和代码public class YangHuiTriangle { public List<List<Integer>> generate(int numRows) {原创 2021-08-14 17:11:08 · 107 阅读 · 1 评论 -
用队列实现栈
用队列实现栈题目用队列实习栈的下列操作push(x) —元素x入栈pop() --移除栈顶元素top() --获取栈顶元素empty --判断返回栈是否为空你可以假设所有操作都是有效操作 (对一个空栈不可能调用pop和top方法)分析队列 先进先出栈 后进先出比较难的就是push可以先在队列中添加元素,之后将每一个队列的元素拿出来插到最后,就完成了和栈一样的效果。代码public class MyStack { //创建队列 private Queue<原创 2021-08-13 21:47:52 · 49 阅读 · 0 评论 -
二分查找算法
二分查找题目给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不在数组中,返回他将会被按顺序插入数组中的位置。假设数组中午重复元素。输入:[1,3,5,6],5输出:2输入:[1,3,5,6],2输出:1分析二分查找1.确定mid(就是中间的数字)2.如果arr[mid]>target,目标在左半边3.如果arr[mid]<target,目标在右半边4.注意循环退出条件–是小于等于,等于也得循环一次改进二分查找原始的二分查找,在找不到时会返回原创 2021-08-11 15:56:15 · 59 阅读 · 0 评论 -
翻转链表(java实现)
目录反转链表题目分析1.利用辅助空间2.迭代实现3.递归实现代码辅助代码ListNode打印工具类利用辅助空间迭代代码递归代码反转链表题目反转一个单链表输入:1->2->3->4->5->NULL输出:5->4->3->2->1->NULL分析1.利用辅助空间1.1将链表数据拷贝到动态链表中1.2动态数组内容反转1.3读取动态数组中的内容时间复杂度 O(N)空间复杂度 O(N)2.迭代实现2.1创建两个指针2.2 两个原创 2021-08-10 20:13:58 · 85 阅读 · 0 评论 -
合并列表算法(迭代+递归)
目录合并两个列表算法(java实现)题目分析1.迭代实现2.递归实现代码工具类代码节点代码打印工具类代码迭代法代码递归法代码合并两个列表算法(java实现)题目将两个升序链表合并成一个新的升序链表。输入:1->2->4,1->3->4输出:1->1->2->3->4->4分析1.迭代实现1.建立一个临时结点方便处理2.不断比较L1,L2的值,哪个小就放到临时结点的后面3.其中一个为空后,将不空的直接放在最后过程:List1:1-&原创 2021-08-10 15:04:40 · 233 阅读 · 0 评论 -
两数之和(Hash+暴力法)
两数之和算法题目给定一个整数数组nums和一个目标值target,在整数数组中找出和目标值的那两个整数,并返回他们的下标。假设每种输入只对应一个答案,同一个元素不能使用两遍。输入:nums=[2,7,11,15],target=9输出: [0,1]解释:nums[0]+nums[1]=9所以返回 [0,1]分析1.暴力法2.哈希法...原创 2021-08-10 11:18:03 · 106 阅读 · 0 评论