
算法
个人爱好
大山峰石
这个作者很懒,什么都没留下…
展开
-
八大基础排序 C/C++
八大基础排序 C/C++一、冒泡排序时间复杂度:空间复杂度:二、选择排序时间复杂度:空间复杂度:三、插入排序时间复杂度:空间复杂度:四、快速排序时间复杂度:空间复杂度:五、归并排序时间复杂度:空间复杂度:六、希尔排序时间复杂度:空间复杂度:七、堆排序时间复杂度:空间复杂度:八、桶排序(基数排序)时间复杂度:空间复杂度:总结提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷原创 2021-08-23 10:13:58 · 115 阅读 · 0 评论 -
打印数组元素所有的排序组合 C/C++
不考虑数组元素相同的情况~!2、定义一个数组,编程打印它的全排列。比如定义:#define N 3 int a[N] = { 1, 2, 3 };则运行结果是:$ ./a.out1 2 3 1 3 2 2 1 3 2 3 1 3 2 1 3 1 2 #include <stdio.h> #define N 3 int a[N]; void perm(int); /*求数组的全排列 */ void pri原创 2021-07-28 19:39:12 · 538 阅读 · 0 评论 -
打家劫舍 leetcode
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。用 dp[i]\textit{dp}[i]d原创 2021-07-19 15:21:52 · 75 阅读 · 0 评论 -
约瑟夫环问题
问题描述:0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。...原创 2021-07-19 14:43:04 · 240 阅读 · 0 评论 -
最长公共子序列(LCS)
最长公共子序列(longest common sequence)推理公式:代码:int **Lcs_length(string X,string Y,int **B){ int x_len = X.length(); int y_len = Y.length(); int **C = new int *[x_len+1]; for (int i = 0; i <= x_len; i++) { C[i] = new int[y_len + 1]; .原创 2021-06-03 20:00:35 · 250 阅读 · 0 评论 -
二叉树中两个子节点的最低公共父节点
class Solution {public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if(root == NULL) return NULL; if(root == p || root == q) return root; TreeNode* left =...原创 2021-06-03 19:37:59 · 121 阅读 · 0 评论 -
Floyd算法
弗洛伊德最短距离算法(Floyd Shortest Path Algorithm)又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。Floyd算法基于一个事实:如果存在顶点k,使得以k作为中介点时,顶点i和顶点j的当前最短距离缩短,则使用顶点k作为顶点i和顶点j的中介点,即dis[i][k] +dis[k][j] < dis[i][j] 时,令dis[i][j] =原创 2021-06-03 11:13:52 · 142 阅读 · 0 评论 -
Dijkstra 算法
迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。#include <iostream>#include <string>#include <sstream>#include <cstring>原创 2021-06-02 18:16:42 · 242 阅读 · 0 评论 -
求解最长回文字符串
Manacher算法核心Manacher算法的核心部分在于它巧妙的令人惊叹的加速,这个加速一下把时间复杂度提升到了线性,让我们从暴力的算法中解脱出来,我们先引入概念,再说流程,最后提供实现代码。概念:ManacherString:经过Manacher预处理的字符串,以下的概念都是基于ManasherString产生的。回文半径和回文直径:因为处理后回文字符串的长度一定是奇数,所以回文半径是包括回文中心在内的回文子串的一半的长度,回文直径则是回文半径的2倍减1。比如对于字符串 "aba",在字原创 2021-05-28 15:44:40 · 378 阅读 · 0 评论 -
Valid Parenthese
题目:Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.The brackets must close in the correct order, "()" and "()[]" are all valid but "(]" and "([)]" are not.Code:class Solution {原创 2021-05-14 16:32:50 · 125 阅读 · 0 评论 -
KMP算法
link: https://www.cnblogs.com/zhangtianq/p/5839909.html本文对kmp算法不做冗余的说明。Next数组规则总结:Next[n]; n = pattern_str.size()(1) 初始Next[0] 为-1;(2) 对于第n个字符Next(n), 假设第Next(n-1)=k;(3) 当k=-1时,则Next(n)=0;(4) 当k!= -1时;将第n-1个字符与第k字符比较;(5) 当pattern_str[n-1]原创 2021-05-12 20:35:33 · 74 阅读 · 0 评论