前言:
今天大家对“算法类问题求解的基本步骤”大概比较关怀,看官们都需要分析一些“算法类问题求解的基本步骤”的相关资讯。那么小编同时在网上汇集了一些关于“算法类问题求解的基本步骤””的相关知识,希望看官们能喜欢,姐妹们一起来了解一下吧!p1.精通一个领域:
1.切碎知识;
2.刻意练习;
3.反馈;
算法和数据结构是内功,重在练习
p2.数据结构:排序;链表;list;spanning tree;树;图;栈;哈希表;
p3.切题4件套:1.分类;2.可能的解3.编码4.用例测试
p4.主定理-算法复杂度
p5.letcode:坚持练习;练习缺陷,弱点;不爽,枯燥;
题目+公司
leetcode做题4件套:
1.做题查(选择最优算法)
2.时间复杂度
3.编辑器写代码
4.反馈
数组 时间复杂度:
查询:o(1)
插入:平均o(n)
删除:平均o(n)
操作:插入,删除
链表linklist(单链表:节点数据和指向下个节点指针)
双向链表:有前驱previous,后驱next 数据节点
时间复杂度:
space:o(n)
prepend:o(1) 头追加
append:o(1)尾追加
查找:o(n)
插入:o(1)
删除:o(1)
堆栈(stack):实现通过链表/数组实现
队列:实现通过链表/数组实现
优先队列(priority Queue):优先队列
特点:正常入,按照优先级出
实现机制:
1.heap(二插堆,斐波)实现
MiniHeap:小顶堆
MaxHeap:大顶堆
2.Binary Search Tree(二叉搜索树)
双端队列(deque):两端都可以出
映射(map)&集合(set): 哈希表 哈希函数:
哈希碰撞(哈希重复):
哈希冲突:解决方式创建一个链表,即采用拉链法解决冲突
List Vs Map vs Set
hashMap vs treeMap
hashMap:采用hash表实现 复杂度 o(1)
treeMap采用 二叉树实现 复杂度 logN
hashSet vs treeSet
hashset采用hash表实现 复杂度 o(1) 快 无序
Treeset采用 二叉树实现 复杂度 logN 相对慢,有序
1.Tree /BinaryTree(二叉树)/Binary search tree(二插搜索树)
2.Graph(图)
数组产生链表,链表产生树,树产生图
平衡二叉树:
红黑树:
Java c++标准库都是用红黑树实现的
BST :二插搜索树
1.二叉树遍历方式:
中序遍历(In-order):左根右 =>array 升序
前序遍历
后序遍历:
2.Recursion(递归):
二叉树遍历:
Pre-oder(前序遍历):根-左-右
In-order(中序遍历):左-根-右
Post-order(后序比遍历):左-右-根
递归、分治
递归代码模板:
通过分治算法,可以并行计算解决问题
贪心(greedy):
贪心法又称贪心算法、贪婪算法:在对问题求解时,总是做出在当前看来是最好的选择。
广度优先搜索:BFS ??
深度优先:一查到底
数组 时间复杂度:
查询:o(1)
插入:平均o(n)
删除:平均o(n)
操作:插入,删除
链表linklist(单链表:节点数据和指向下个节点指针)
双向链表:有前驱previous,后驱next 数据节点
时间复杂度:
space:o(n)
prepend:o(1) 头追加
append:o(1)尾追加
查找:o(n)
插入:o(1)
删除:o(1)
堆栈(stack):实现通过链表/数组实现
队列:实现通过链表/数组实现
优先队列(priority Queue):优先队列
特点:正常入,按照优先级出
实现机制:
1.heap(二插堆,斐波)实现
MiniHeap:小顶堆
MaxHeap:大顶堆
标签: #算法类问题求解的基本步骤 #算法时间复杂度主定理 #算法类问题求解步骤是什么