数据结构与算法
陈二总
编程小白向前冲!
展开
-
数组、链表、跳表的基本实现和特性
一、数组1.底层实现由内存管理器去内存中申请一段连续的地址,可以通过内存管理器去直接访问开辟的地址;2.基本特性a.可以随机地进行访问;b.删除添加操作比较麻烦,需要O(n)的时间复杂度;3.ArrayList源代码(不适合大量的插入、删除操作)a.指定位置的插入:完成一些前期查询工作后,需要将后部数组中的数据进行移动;System.arraycopy(source,sourcePos,destination,destinationPos,length):第一个参数时原数组,第二个参数时要复原创 2020-11-09 21:56:28 · 114 阅读 · 0 评论 -
时间复杂度和空间复杂度分析
一、时间复杂度1.最常见的时间复杂度(注意:只看最高复杂度的运算)O(1):常数复杂度;O(log n):对数复杂度;——>for循环或者while循环中与n的乘阶有关O(n):线性时间复杂度;——>单循环O(n^2):平方;——>嵌套循环O(n^3):立方;O(2^n):指数;——>递归计算斐波拉契数列O(n!):阶乘;2.递归时间复杂度分析(画出树的分析树)每增加一层就要增加2^n次运算;a.使用主定理来计算递归函数的时间复杂度二分查找:O(logn);原创 2020-11-07 20:37:55 · 547 阅读 · 0 评论 -
训练环境设置、编码技巧和Code Style
1.必须使用chrome浏览器,goole必须是默认浏览器2.java:Intelliej pyhton:pycharm当然在VScode中使用插件与可以替代上面的两种编译器3.leetcode网站介绍(两者只是在后缀名上有所差别:-cn)中文站:主要可以用于完成编码,测试正确与否;外文站:多看看discuss中Most Votes中优秀的回答(前3个);4.一些codestyle(平时一定要注意)a.if后面一定要有空格;b.左括号前面一定要有空格,并且左括号一定不要另起一行,跟在后面就原创 2020-11-06 21:44:50 · 139 阅读 · 0 评论 -
算法与数据结构应该如何下手
一、数据结构与算法总览1、如何在一个领域有所建树将知识转化为树状结构,分清主次,分块突破。2、数据结构分类3、算法分类前3中算法是所有算法的核心,所有复杂的算法最后都可以转化为这3种算法;A*:启发式搜索;4.两张脑图5.刷算法题的技巧a.切题四件套1、clarification:多看几遍题目2、Possible Slution: 尽量多想几种解决方法,比较其时空复杂度3、coding4、Test cases:给出题目的测试用例b五遍算题法1、第一遍:10分钟的读题原创 2020-10-27 21:46:16 · 389 阅读 · 0 评论