笔记
LfreshJ
这个作者很懒,什么都没留下…
展开
-
无重复字符的最长子串
无重复字符的最长子串 时间复杂度O(N) 方法滑动窗口(双指针)暴力解法:思路如图:观察第一个若abc是最最大值,那么bc之间也应该是不重复的,所以从这里看出我们需要维护两个指针,左右。那么怎么去重?C++用unordered_set代码如下:class Solution {public: int lengthOfLongestSubstring(string s) { // 哈希集合,记录每个字符是否出现过原创 2021-01-15 17:20:33 · 141 阅读 · 0 评论 -
快速排序
快速排序基本思想分解(Divide) : 以a[p]为基准元素将a[p:r]划分为3段,a[p:q-1], a[q]和a[q+1:r],使得a[p:q-1]当中任何一个元素小于等于a[q],而a[q+1:r]种任何一个元素大于等于a[q]。下标q在划分过程中确定。递归求解(Conquer): 通过递归调用快速排序,分别对a[p:q-1]和a[q+1:r]进行排序。合并(Merge):由于对a[p:p-1]和a[q+1,r]排序是就地进行的,因此在a[p:q-1],a[q+1,r]都已排好序后,不需原创 2021-01-02 21:53:36 · 118 阅读 · 0 评论 -
全排列,循环,交换,递归,回溯
排列问题关键词:循环,交换,递归,回溯举例eg: {1, 2, 3}的全排列是多少? 利用高中全排列的知识,做出如下解释:第一个位置可放3个元素,第二个位置还剩下2个元素可放,最后放一个元素,得到3 * 2 * 1 = 6 种放法。 那么如何用代码表示上面的放法呢? 第一个位置三种放法,首先怎么得到三个数据呢?第一次遍历,自己和自己交换,第二次遍历,自己和第二个数交换,第三次,自己和第三个数交换。int k = 0;int原创 2021-01-02 21:21:41 · 233 阅读 · 0 评论 -
dijkstra算法(数据结构:链式前向星)
#include <iostream>#include <queue>#include <vector>#include <cstring>#include <fstream>using namespace std;const int INF = 0x3f3f3f3f;const int maxn = 1005;struct Edge{ int to; //边的尾点 int w; //边权值 int next; /原创 2020-11-10 20:36:50 · 581 阅读 · 0 评论 -
校园导游程序–基于链式前向星
123原创 2020-06-21 15:25:14 · 578 阅读 · 2 评论