算法
chnyac
chnyac
展开
-
算法:经典回溯
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。class Solution {public: vector<vector<string>> res; bool check(string s,int left,int right){ while(left<right){ if(s[left]!=s[right]){ return false.原创 2020-08-24 15:36:55 · 262 阅读 · 0 评论 -
算法:环形链表
只看两种情况第一种:...->1(fast)->2(slow)->3->...此时两者相临,快指针走两个节点,慢指针走一个节点,两者在下一个时刻必相遇...->1->2->3(fast & slow)->...第二种:...->1(fast)->2->3(slow)->4->...此时两者相差一个节点,快指针走两个节点,慢指针走一个节点,之后回到第一种情况...->1->2->3(f原创 2020-08-19 16:58:53 · 229 阅读 · 0 评论 -
C++:11种排序方法
// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。///*排序算法(升序):1、插入排序 1)01 √ 插入 查找插入位置 2)02 √ 折半插入 快速查找插入位置 3)03 √ 希尔 不同步长分部排序2、交换排序(每一次遍历确定一个位置) 1)04 √ 冒泡 每次确定一个极数的位置 2)05 √ 快速 每次确定一个选择的数的位置3、选择排序 .原创 2020-05-14 22:59:57 · 935 阅读 · 1 评论 -
算法:KMP 算法实现及详解
1、求下标 K 所对应的 next 数组对应值的具体方法:观察下标 K-1 对应 字符串 的值,令 X 为下标 K -1 对应的 next 数组的值(X = next [ K-1 ]) 若 X 为 -1,则下标 K 对应的 next 数组值为 0,否则进入步骤3 观察下标为 X 的 字符串 的值是否与下标 K-1 对应 字符串 的值相等,若相等则下标 K 对应的 next 数组值为 X+1...原创 2018-09-20 21:38:30 · 330 阅读 · 0 评论 -
算法:快包算法
快包算法(分治法求凸包问题)过程 两个极端点,它们是最右最下点p和最左最上点q 有向直线pq将整个凸包划分为左凸包和右凸包 对左右凸包分别进行递归 递归过程: 设S1是严格在直线pq右边的点集 在S1中寻找距离pq最远的点,作为pq右边的一个极端点b 连接pb和qb 把pb右侧的点集记为A,qb右侧的点集记为B 对边pb和点集A以及边qb和...原创 2018-10-16 19:23:30 · 2153 阅读 · 0 评论 -
算法:最小生成树算法(Prim算法和kruskal算法)
Prim算法(普利姆算法)目标:找到原图的最小连通子图方法:初始化:设置数组 key[u] 存储顶点 u 的对应对应权值,根节点的权值为 0,并将所以顶点的父节点pre[u]设为空;步骤1、将所有顶点放入按权值排序的最小优先队列 Q;步骤2、Q 不为空时,从 Q 中取出一个顶点 u ;步骤3、对u的每条边(u,v)进行遍历,若 v 属于 Q 且 weight(u,v)&l...原创 2018-11-09 15:24:12 · 229 阅读 · 0 评论