作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个曾经在 ACM 界划水多年的蒟蒻… 在“刷了几千道算法题,这些我私藏的刷题网站都在这里了!”这篇文章中,我有说过要写一篇如何刷题的文章,然而好几个月过去了,我实在没法舔着脸继续拖下去了… 所以,我来交作业了… 我好多次在想要如何写这篇文章,试图去回想我刷题的时光,当时的种种感觉拼接起来,一次次动笔,又一次次的放弃。 其实诸多纠结,我试图遵循常规,将这种刷题经验公式化,列个一二三四,期间穿插一些算法题来 give an e…

2021年4月25日 0条评论 3点热度 阅读全文

5.LC415:字符串 415. 字符串相加 - 力扣(LeetCode) (leetcode-cn.com) 难度:简单 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。 提示: num1 和num2 的长度都小于 5100 num1 和num2 都只包含数字 0-9 num1 和num2 都不包含任何前导零 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式   思路: 使用charAt()方法,…

2021年4月13日 0条评论 3点热度 阅读全文

堆排序是利用完全二叉树的结构思想,对线性数组进行排序的。 最大堆进行升序排序的基本思想: ① 初始化堆:将数列a[0...n-1]构造成最大堆。 ② 交换数据:将a[0]和a[n-1]交换,使a[n-1]是a[0...n-1]中的最大值;然后将a[0...n-2]重新调整为最大堆。 接着,将a[0]和a[n-2]交换,使a[n-2]是a[0...n-2]中的最大值;然后将a[0...n-3]重新调整为最大值。 依次类推,直到整个数列都是有序的。 在第一个元素的索引为 0 的情形中: 性质一:索引为i的左孩子的索引是…

2021年1月15日 0条评论 16点热度 阅读全文

有时有些读者问我,数据结构与算法该怎么学?有书籍推荐的吗?Java 初学者该怎么学等等。今天我就给大家介绍一些我这几年看过的一些自认为优秀的书籍,由于我看的大部分书籍可以说都是通用的,所以如果你有时间的话,还是挺建议看看的,特别是学生。 而且,我还给大家准备好了电子书,文末即可获取,感觉自己太良心! 数据结构与算法 数据结构与算法相关的书籍应该是我看的最多的一种数据吧,从大一到现在,从未间断过,下面就介绍下从大一到现在都看过哪些自认为优秀的书籍,注意,我不知道适不适合你,但我觉得看的过程中很舒服。 1、数据结构与算…

2021年1月15日 0条评论 16点热度 阅读全文

 本人技术小白,培训班出身,工作一段时间之后开始补基础,本人在学习之前喜欢先列一下计划,所以参考知乎大神的推荐,写一下自己的学习过程 我觉得入门学习算法与数据结构时应包含三个部分: 选择一本合适的书。 编程实现和应用。 反复学习。 1、选择一本合适的书  我是用的是算法第四版,因为我是学java出身,而这本书中使用Java代码进行实现,学习起来更加轻松 2、编程和实现应用 动手实现 就和所有的程序一样,理解和变成实现是完全不同的挑战,自己动手实现一些基础数据结构(如排序,堆栈等)的简化版API能…

2021年1月15日 0条评论 15点热度 阅读全文

最近在做文本分析相关的实验,统计词频,情感度量许多数据预处理的工作要用到集合类的遍历,借这个机会也好好复习了一下Java中Map,List的用法。 1. Map的遍历 Map这种集合不能直接取出元素,必须要转换成Set,然后使用Iterator迭代取每一个键值对。以下方法均适用于Map的实现类HashMapHashMap,LinkedHashMap,TreeMap等 方法一:使用EntrySet(我比较常用),可以同时取出key和value Map<String, String> testMap = n…

2021年1月15日 0条评论 25点热度 阅读全文

引言 今天我们来学习一种可以快速查找、插入、删除的数据结构,据说可以代替红黑树。就是本文的标题——跳表(SkipList)。跳表还有一个优点是实现起来简单。 redis中的有序集合,其实就是基于跳表实现的。 为啥叫做跳表,听到这个名字我第一反应是感觉它很跳。 其实 跳表结合了链表和二分查找的思想 由原始链表和一些通过“跳跃”生成的链表组成 第0层是原始链表,越上层“跳跃”的越高,元素越少 上层链表是下层链表的子序列 查找时从顶层向下,不断缩小搜索范围 特性 跳表有很多层,如果只看0层的话,就是一个有序链表。那么其他…

2020年3月28日 0条评论 2点热度 阅读全文

文章目录 原理 核心代码 代码 path[][]数组解释 完整代码 原理 【Floyd算法】用动态规划的思想求任意两点之间的最短路径 【评价】时间复杂度 O ( n 3 ) O(n^3) O(n3),空间复杂度 O ( n 2 ) O(n^2) O(n2),但形式上比Dijkstra简单些,也容易理解 【基本思想】以二维数组D[v][w]保存v->w的最短路径长度 【初始状态】D[v][w] --> 没有中间点,v直接走到w的距离 【分别考虑所有结点u】把u看成中转站,检查v->u->w(即…

2019年10月15日 0条评论 0点热度 阅读全文

拓扑排序是将有向无环图G的所有顶点排成一个线性序列,使得对图G中的任意两个顶点,如果存在u->v,那么u一定在v的前面 比如在这张图中,学科的学习要按照一定的顺序,学习了某些课程后,才能学习接下来的课程 学习顺序就可以按照拓扑排序算法得出: 1.定义1个队列Q,并把所有入度为0得结点加入队列Q 2.取队首结点,输出。然后删除它所有从它出发的边,然后令这些边到达的结点的入度-1 3.此时如果某个结点入度为0,那么就将这个结点入队 4.重复上述操作,直到队列为空 如果元素出队次数!=图中结点个数,那么这个图中就存…

2019年2月14日 0条评论 0点热度 阅读全文

  二分查找原理: 条件:sorted :有序,单调递增,或者单调递减。        Bounded:存在上下边界。        Acssisible  by   index: 可到达。 时间复杂度:  log2(n)   空间复杂度  :O(1) 图解:   1.  小于中间数 左边查找,大于中间数右边查找。       …

2019年2月11日 0条评论 0点热度 阅读全文