随笔分类 - 数据结构
摘要:解题思路: 1、单调栈:因为是循环数组,因此把数组复制三遍,ans 数组复制为2倍长,维护一个单调非递增的栈,栈保存的元素是元组(a[i] , i ),如果后面的值有比栈顶元素的值大,栈顶元素出栈,更新ans[i]的值为让其出栈的值,最后返回ans数组的一半,即最终答案。 2、线段树:数组复制两遍,
阅读全文
摘要:快排的核心思想就是枢轴左边要么都是比它值大的,要么就是都是值比它小的,右边同理。 快排最优的时间复杂度为O(n*logn),最坏情况为要么全是逆序或者正序,时间复杂度为O(n*n),根据推导,平均时间复杂度为O(n*logn)。 就空间复杂度来说,主要是递归造成的栈空间的使用,最好情况,递归树的深度
阅读全文
摘要:1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 struct Node{ 7 int num; 8 Node * next; 9 }node[1000]; 10 int vis[1000]; 11 void insert_link(Node *a,int value){ ...
阅读全文
摘要:1 /* 2 寻常的函数实现 3 并非类定义 4 */ 5 6 #include 7 #include 8 using namespace std; 9 struct Node{ 10 int value; 11 Node * next; 12 }; 13 void build_link(Node * a,int n){ //建表 14 Node *p...
阅读全文
摘要:单链表查找最大值 代码: 两个递增链表的合并,并且去重 实现代码: 如有错误,麻烦指出。Thanks♪(・ω・)ノ
阅读全文