自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 无重复字符的最长子串

无重复字符的最长子串    时间复杂度O(N)    方法滑动窗口(双指针) 暴力解法: 思路如图: 观察第一个若abc是最最大值,那么bc之间也应该是不重复的,所以从这里看出我们需要维护两个指针,左右。 那么怎么去重? C++用unordered_set 代码如下: class Solution { public: int lengthOfLongestSubstring(string s) { // 哈希集合,记录每个字符是否出现过

2021-01-15 17:20:33 125

原创 快速排序

快速排序 基本思想 分解(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 99

原创 全排列,循环,交换,递归,回溯

排列问题 关键词:循环,交换,递归,回溯 举例 eg: {1, 2, 3}的全排列是多少?   利用高中全排列的知识,做出如下解释:第一个位置可放3个元素,第二个位置还剩下2个元素可放,最后放一个元素,得到3 * 2 * 1 = 6 种放法。   那么如何用代码表示上面的放法呢?   第一个位置三种放法,首先怎么得到三个数据呢? 第一次遍历,自己和自己交换,第二次遍历,自己和第二个数交换,第三次,自己和第三个数交换。 int k = 0; int

2021-01-02 21:21:41 229

原创 斐波那契(尾递归,DP)

斐波那契 先看斐波拉契递归的朴素版本: int fib1(int n) { if(n < 2) return n; else return fib1(n-1) + fib1(n-2);` } 这段代码的意思是:第n个数等于前两个数之和。但 f(1) = 1, f(0) = 0, 这两个特殊值作为递归出口。 优化: 尾递归: int fib_wei(int n , int a, int b) { if(n < 2) return n; if(n == 2)

2020-11-25 21:03:04 241 5

原创 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 573

原创 链式前向星(问题式引导)

链式前向星 用边作为储存核心 struct Edge { int to; //边的尾点 int w; //边权值 int next; //指向上一条边 } edge[maxn]; int head[maxn]; 问题一:边的另一个节点在哪? 与邻接矩阵储存逻辑很像,有一个“头”,用head[]里的下标表示。 问题二:怎么去模拟邻接矩阵的头后接一个一个的节点? void addEdge(int from, int to, int w) { edge[cnt].to = to;

2020-11-10 20:13:23 244

原创 268. 缺失数字

给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。 示例 1: 输入: [3,0,1] 输出: 2 示例 2: 输入: [9,6,4,2,3,5,7,0,1] 输出: 8 来源:力扣(LeetCode) 链接:缺失的数字力扣源地址 解题思路: 核心数据0 - n; 1:利用数列知识 通过观察可知,加上缺失的数据,数据是一个等差为一的数列,于是得出如下解法。 class Solution { public: int missingNumber(vect

2020-06-27 23:40:42 157

原创 校园导游程序–基于链式前向星

123

2020-06-21 15:25:14 568 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除