算法
只留清气满乾坤
这个作者很懒,什么都没留下…
展开
-
20200323_递归 leetcode70
写递归代码的关键就是找到如何将大问题分解为小问题的规律,并且基于此写出递推公式,然后再推敲终止条件,最后将递推公式和终止条件翻译成代码。因此,编写递归代码的关键是,只要遇到递归,我们就把它抽象成一个递推公式,不用想一层层的调用关系,不要试图用人脑去分解递归的每个步骤。 假设你正在爬楼梯。需要 n阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? ...原创 2020-03-23 21:05:24 · 171 阅读 · 0 评论 -
20200322_LeetCode283移动零
给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 解题思路: 用一个指针j记录非零的下标,再指针循环的过程中遇到非零的元素进行交换或者将非零的元素赋值给指针j对应的零元素,再将j指针后的元素全部置为0即可. 1.比较暴力的方法 嘿嘿 public static voi...原创 2020-03-22 22:17:48 · 81 阅读 · 0 评论 -
20200321跳表
对于一个单链表来讲,即便链表中存储的数据是有序的,如果我们要想在其中查找某个数据,也只能从头到尾遍历链表。这样查找效率就会很低,时间复杂度会很高,是 O(n). 对链表建立一级“索引”,查找起来是不是就会更快一些呢?每两个结点提取一个结点到上一级,我们把抽出来的那一级叫作索引或索引层。你可以看我画的图。图中的 down 表示 down 指针,指向下一级结点。 ...原创 2020-03-22 14:03:28 · 140 阅读 · 0 评论 -
20200321_数组 链表
数组是存放到一组连续空间的内存和相同类型的数据,链表可以存放到一组不连续空间。 ArrayList是查询速度比较高,新增 删除效率比较低 LinkedList是查询速度比较慢,需要一个节点一个节点遍历查找,而操作数据则比较快。可分为单链表,双向链表,循环链表 时间复杂度比较 操作 ArrayList LinkedList 头部添加 O(1) O(1) ...原创 2020-03-21 16:50:13 · 127 阅读 · 0 评论 -
20190320时间复杂度,空间复杂度
学习数据结构和算法,首先要掌握一个数据结构与算法中最重要的概念-复杂度分析, 七种常见复杂度: O(1):Constant Complexity 常数复杂度 O(log n):Logarithmic Complexity 对数复杂度 O(n):Linear Complexity 线性时间复杂度 O(n^2):N square Complexity 平方 O(n^3):N square ...原创 2020-03-21 12:55:50 · 129 阅读 · 0 评论