【找工作】C++和算法复习(自用)

server/2025/2/27 8:01:39/

文章目录

    • C++
      • 头文件
      • 自定义排序函数
      • stl
    • 算法
      • 数据结构
        • 树状数组
      • 数学
      • 字符串
        • manacher
        • kmp

自用随便记录

C++

排序
stl

头文件

全能头文件:

#include<bits/stdc++.h>

自定义排序函数

bool compare(const int &odd1,const int &odd2)
{return odd1>odd2;
}

stl

枚举map

  map<int, string> mapStudent;  mapStudent.insert(pair<int, string>(1, "student_one"));  mapStudent.insert(pair<int, string>(2, "student_two"));  mapStudent.insert(pair<int, string>(3, "student_three"));  map<int, string>::reverse_iterator  iter;  for(iter = mapStudent.rbegin(); iter != mapStudent.rend(); iter++)  {  cout<<iter->first<<"   "<<iter->second<<endl;  }  

优先队列

算法

数据结构


树状数组
int tree[maxn<<2];
int lowbit(int x){return x & -x;
}
int get_sum(int idx){int sum = 0;while(idx){sum += tree[idx];idx -= lowbit(x);}return sum;
}
void update(int idx, int value){while(idx < LIMIT){tree[idx] += value;idx += lowbit(idx);}
}

数学

快速幂
gcd和最小公倍数(ab的最小公倍数=ab/gcd(ab))

int gcd(int x, int y){if(x<y) return gcd(y, x);return y == 0?x:gcd(y, x%y);
}

ex_gcd
质数

字符串

manacher

找最长回文子串

void initialize(int n, char ch[maxn]){int nn = n<<1|1;for(int i = nn-1, j=n-1; i>=2; i-=2){ch[i] = '#';ch[i-1] = ch[j];}ch[0] = '#';
}void manacher(int n, char ch[maxn]){memset(d, 0, sizeof(d));//d[i]是不包括i在内的半径int mid = -1;int maxr = -1;for(int i = 0; i < n; i++){if(maxr>d[i]){int other = mid * 2 - i;d[i] = min(d[other], maxr-i);}while(i-d[i]>=0 && i+d[i]<n && ch[i-d[i]]==ch[i+d[i]])i++;d[i]--;if(i+d[i]>maxr){mid = i;maxr = i+d[i];}}
}
kmp

模式匹配
前缀函数https://oi-wiki.org/string/kmp/
特点1:“一个重要的观察是 相邻的前缀函数值至多增加 1。”
特点2:当不符合最优的增加1的情况的时候,如何快速找到下一个可以匹配的对象?
注意 前缀数组pi[0]=0!!!
其他情况下 表示的是重复前后缀的长度,比如对于abab字符串,pi[3]=2(有重复串ab)

KMP:给定一个文本 t 和一个字符串 s,我们尝试找到并展示 s 在 t 中的所有出现(occurrence)
力扣测试题:https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/description/

const int maxn = 1e4 + 10;
class Solution {
public:int pi[maxn];//前缀数组void get_pi(string s){int n = s.length();memset(pi, 0, sizeof(pi));for(int i = 1; i < n; i++){int j = pi[i-1];while(j != 0 && s[j] != s[i]){j = pi[j-1];}if(s[i] == s[j]) pi[i] = j+1;else pi[i] = 0;}}int strStr(string haystack, string needle) {int n_needle = needle.length();get_pi(needle);int n = haystack.length();int j = 0;for(int i = 0; i < n; i++){while(j != 0 && haystack[i] != needle[j]){j = pi[j-1];}if(haystack[i] == needle[j]){j++;}//printf("i:%d, ch:%c, j:%d, chj:%c\n", i, haystack[i], j, needle[j]);if(j == n_needle) return i - n_needle + 1;}return -1;}
};

http://www.ppmy.cn/server/170977.html

相关文章

低代码在独具特色的业务中的应用:实践方案与未来展望

低代码开发是一种新兴的软件开发模式&#xff0c;它允许开发者通过图形化界面和最少的手写代码来快速构建应用程序。随着企业对快速开发和部署应用程序的需求日益增长&#xff0c;低代码平台在各个行业中得到了广泛的应用。本文将探讨低代码在独具特色的业务中的应用&#xff0…

超过DeepSeek、o3,Claude发布全球首个混合推理模型,并将完成新一轮35亿美元融资...

Anthropic于2025年2月25日发布全球首个“混合推理”AI模型Claude 3.7 Sonnet&#xff0c;并在融资层面取得重大进展&#xff0c;计划完成35亿美元的新一轮融资&#xff0c;估值将达615亿美元。以下是核心信息整理&#xff1a; 技术突破&#xff1a;双思维模型与代码能力 1. 混合…

《云豹录屏大师:免费解锁高清录屏新体验》

今天我给大家带来一款超棒的免费录屏软件&#xff0c;它能轻松录制出MP4、AVI、WMV格式的标清、高清甚至原画视频&#xff0c;完全满足你的各种需求。 这款软件的界面简洁明了&#xff0c;即使是新手也能轻松上手&#xff0c;但它的功能却非常强大&#xff0c;一点都不简单&am…

Unity git 获取当前修改或者新增的文件列表

直接上代码 using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Text.RegularExpressions; using UnityEngine;public class GitFileStatusCheckerTools : MonoBehaviour {// 获取Git变更文件列表&#xff08;新增/修…

常见锁类型介绍

下面结合代码详细介绍 Mutex、RW Lock、Futex、自旋锁、信号量、条件变量 和 synchronized&#xff0c;并分析它们的适用场景、特点以及为什么这些锁适用于特定场景。我们将从锁的实现机制和性能特点出发&#xff0c;解释其适用性。 1. Mutex&#xff08;互斥锁&#xff09; 代…

智能升级、安全加倍,遨游防爆对讲机拉起通信安防线

在充斥着爆炸性气体和易燃物质的危险作业环境中&#xff0c;通信设备的选择关乎生命安全。一旦通信设备引发电火花&#xff0c;其后果将不堪设想。因此&#xff0c;专为防范易燃易爆环境而设计的防爆对讲机&#xff0c;凭借其独特的防爆技术和设计&#xff0c;成为了这些高风险…

Win7库显示*.library-ms,恢复到正常

Win7库里的文件全部变成***.library-ms了&#xff0c;怎么弄都没法恢复 库文件只显示*..library-ms用管理员身份运行CMD输入ASSOC.library-msLibraryFolder 库文件只显示*…library-ms 用管理员身份运行CMD输入ASSOC.library-msLibraryFolder 参考 [1]: https://tieba.baidu.…

JUC并发—14.Future模式和异步编程分析二

大纲 1.FutureTask(Future/Callable)的使用例子 2.FutureTask(Future/Callable)的实现原理 3.FutureTask(Future/Callable)的源码分析 4.CompletableFuture的基本介绍 5.CompletionStage方法及作用说明 6.CompletableFuture的实现原理分析 7.CompletableFuture的核心源码…