![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 55
孤独时代的罗永浩
学架构中。。。
展开
-
【力扣打卡--day10】
目录187.字符串189.数组198.dp199.层次遍历200.dfs187.字符串class Solution {public: vector<string> findRepeatedDnaSequences(string s) { map<string,int> st; vector<string> res; int num=s.size(); for(int i=9;i<num;原创 2022-03-03 22:37:05 · 126 阅读 · 0 评论 -
【力扣打卡--day9】
目录137.位运算138.链表139.dp+字符串哈希142.链表143.链表146.链表150.栈151.双指针+排序162.二分165.双指针137.位运算class Solution {public: int singleNumber(vector<int>& nums) { int one=0,two=0; for(auto x:nums){ one=(one^x)&~two;原创 2022-03-03 21:40:36 · 804 阅读 · 0 评论 -
力扣打卡day13
目录水dfs水dfsdfs洗牌算法水上台表演算法设计水水class Solution {public: char findTheDifference(string s, string t) { unordered_map<char,int> cnt; for(auto c:s) cnt[c]++; for(auto c:t) cnt[c]--; for(auto [a,b]:cnt){ if(原创 2022-02-27 09:33:13 · 177 阅读 · 0 评论 -
力扣打卡day12
目录模拟题floyd水水水,sb题双指针dfs模拟水题模拟题白给模拟题class Solution {public: int findNthDigit(int n) { long long k=1,c=9,s=1;//k是第几位,c是k位数有几个,s是k位数的起点 while(n>k*c){ n-=k*c; k++,c*=10,s*=10; } s+=(n+k-1)/k-1原创 2022-02-26 06:11:04 · 226 阅读 · 0 评论 -
【力扣打卡--day8】【有注释和美女的】
目录bfsbfsdpbfs/*// Definition for a Node.class Node {public: int val; Node* left; Node* right; Node* next; Node() : val(0), left(NULL), right(NULL), next(NULL) {} Node(int _val) : val(_val), left(NULL), right(NULL), next(NU原创 2022-02-05 10:41:18 · 647 阅读 · 1 评论 -
【力扣打卡--day7】
目录1.dfs2.dfs(Morris)3.bfs1.dfs/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), le原创 2022-02-04 09:56:00 · 558 阅读 · 0 评论 -
【力扣打卡--day6】
目录1.链表2.链表3.栈4.dfs5.dp6.链表7.dfs8.dfs9.dp10.dp1.链表/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} *原创 2022-02-01 14:42:51 · 833 阅读 · 0 评论 -
【力扣打卡--day5】【有注释详解】
目录1.dp2.栈3.脑筋急转弯4.二分5.脑筋急转弯6.dfs7.位运算8.dfs9.栈10.二分1.dpclass Solution {public: int minPathSum(vector<vector<int>>& grid) { int n=grid.size(); if(!n) return 0; int m=grid[0].size(); vector<vector&l原创 2022-02-01 08:17:32 · 698 阅读 · 0 评论 -
【力扣打卡--day4】【有注释有思路】
目录1.排序思路2.位运算(快速幂)思路3.bfs思路4.贪心思路5.双指针思路6.贪心思路7.bfs思路8.链表思路9.dp思路10.dp思路1.排序class Solution {public: vector<vector<string>> groupAnagrams(vector<string>& strs) { unordered_map<string,vector<string>> hash;原创 2022-01-31 15:37:06 · 1131 阅读 · 0 评论 -
【力扣打卡--day3】
目录1.二分2.模拟3.双指针4.dfs5.dfs6.位运算7.dp8.dfs9. dfs10.找规律1.二分class Solution {public: vector<int> searchRange(vector<int>& nums, int target) { if(nums.empty()) return {-1,-1}; int l=0,r=nums.size()-1; while(l<r)原创 2022-01-29 01:04:29 · 789 阅读 · 1 评论 -
【力扣打卡--day2】
1.dfsclass Solution {public: vector<string> ans; string a[10]={ "","","abc","def", "ghi","jkl","mno", "pqrs","tuv","wxyz" }; vector<string> letterCombinations(string digits) { if(digits=="")原创 2022-01-27 16:01:19 · 421 阅读 · 2 评论 -
【力扣打卡--day1】
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(nex..原创 2022-01-26 00:07:02 · 705 阅读 · 0 评论 -
自用算法笔记---死背
目录56、合并区间61、旋转链表56、合并区间class Solution {public: vector<vector<int>> merge(vector<vector<int>>& intervals) { int N=intervals.size(); vector<vector<int>> res; sort(intervals.begin(),inter原创 2021-12-06 17:15:54 · 684 阅读 · 0 评论 -
算法-动态规划
这里写目录标题1.最长回文子串1.最长回文子串给你一个字符串 s,找到 s 中最长的回文子串。class Solution {public: string longestPalindrome(string s) { int N=s.size(); int l=0,r=0; vector<vector<int>> dp=vector<vector<int>>(N,vector<int>原创 2021-11-18 18:47:47 · 2982 阅读 · 0 评论 -
算法-贪心
目录1.盛水最多的容器1.盛水最多的容器给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。class Solution {public: int maxArea(vector<int>& height) { int res=0;原创 2021-11-18 18:47:28 · 66 阅读 · 0 评论 -
算法-并查集
目录一、并查集知识点1.合并集合2.连通块中点的数量3.食物链4.被围绕的区域5.最长连续序列6.岛屿数量7.除法求值8.账户合并9.冗余连接10.省份数量一、并查集知识点并查集(Union-find Data Structure)是一种树型的数据结构。它的特点是由子结点找到父亲结点,用于处理一些不交集(Disjoint Sets)的合并及查询问题。Find:确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一子集。Union:将两个子集合并成同一个集合。重点,短命短思维巧快速支持原创 2021-11-18 16:02:52 · 295 阅读 · 0 评论 -
算法C++
目录STLSTLvector(变长数组),倍增的思想,支持比较运算(按字典序) 定义:: vector <int> a; 定义:一个vector数组a vector <int> a(10); 定义:一个长度为10的vector数组a vector <int> a(10,3); 定义:一个长度为10的vector数组a,并且所有元素都为3 常用函数:: size(); 返回元素个数原创 2021-10-28 14:58:20 · 117 阅读 · 0 评论 -
程序猴算法日记
目录并查集合并集合知识点连通块中点的数量食物链并查集合并集合#include<iostream>using namespace std;int p[100010];int find(int x){ if(p[x]!=x) p[x]=find(p[x]); // 如果当前结点不是该集合祖宗结点就递归找。 //因为要优化路径压缩,找出来顺便都赋值给所有结点的父节点。时间复杂度降到O(1) return p[x]; // 返回老爸一层层递归往原创 2021-10-02 20:49:00 · 167 阅读 · 0 评论 -
动态规划题集(纯代码题)
目录1.最长回文串(双指针+DP)1.最长回文串(双指针+DP)给你一个字符串 s,找到 s 中最长的回文子串。注:区别于公共子序列class Solution {public: string longestPalindrome(string s) { int b=0, l=0;//起点,终点指针 bool dp[1000][1000] = { false }; for (int i = s.length() - 1; i >= 0; i--) {//向前遍历起点指针,避免数据串原创 2021-07-07 15:24:06 · 210 阅读 · 0 评论 -
分治法题集
目录1.选择题2.简答3.分治设计题4.时间复杂度证明5.分治设计题6.简答题7.证明题8.算法基础9.时间复杂度简答10.时间复杂度证明11.分治设计题12.选择题13.分治的适用条件14.分治设计题1.选择题n^1/2的复杂度小于logn2.简答3.分治设计题#include<iostream>using namespace std;const int N = 100010;int n,x;int a[N];int main() { cin >&g原创 2021-06-21 12:34:56 · 536 阅读 · 0 评论 -
算法基础知识
基础算法基本特性算法内容时间复杂度算法基本特性算法内容时间复杂度原创 2021-06-21 10:13:44 · 118 阅读 · 0 评论 -
分治法知识总结
目录一般方法二分检索归并排序一般方法二分检索归并排序解递推关系式原创 2021-06-21 09:54:39 · 91 阅读 · 0 评论 -
回溯法和分支限界法题集
目录1.分支限界选择题2.分支限界简答题3.分支限界法简答题4.回溯计算题5.分支限界法选择题![在这里插入图片描述](https://img-blog.csdnimg.cn/20210620161354236.png)6.回溯简答题7.分支限界法计算题8.分支限界法简答题9.八皇后10.带期限作业排序1.分支限界选择题2.分支限界简答题3.分支限界法简答题需要使用LC1函数选取成本估值函数作为成本函数的下界4.回溯计算题5.分支限界法选择题6.回溯简答题状态空间树原创 2021-06-21 09:19:32 · 1973 阅读 · 0 评论 -
NP难和NP完全问题
NPP问题定义证明NPCP问题定义证明NPC原创 2021-06-20 13:24:20 · 280 阅读 · 0 评论 -
分支-限界法知识总结
分支限界法分支限界法和回溯法联系与区别术语LC检索15-谜问题总结分支限界法和回溯法联系与区别两者都是在解空间树上搜索问题解的算法两者求解目标不完全相同回溯法求解目标:找出解空间树中满足约束条件的一个或所有解。分支限界法求解目标:找出满足约束条件的一个解,或者在满足约束条件解中找到使目标函数达到极大或极小的解,即某种意义上的最优解。术语LC检索15-谜问题总结...原创 2021-06-20 12:59:07 · 522 阅读 · 0 评论 -
回溯法知识总结
回溯法目录回溯法适用问题回溯的定义不受限结点回溯法适用问题回溯的定义不受限结点原创 2021-06-20 11:31:43 · 154 阅读 · 0 评论 -
贪心方法题集
贪心题目集合1.贪心背包问题2.带期限的作业排序(并查集实现)3.贪心证明题4.贪心证明(5.3定理)5.带期限的作业排序(并查集)6.贪心设计题7.贪心简答题8.贪心证明题9.贪心简答题10.带期限的作业排序(并查集)11.1.贪心背包问题2.带期限的作业排序(并查集实现)3.贪心证明题4.贪心证明(5.3定理)5.带期限的作业排序(并查集)6.贪心设计题标准:选币值为标准,即选取一张纸币就尽可能大的填充到工资的数额就能让使用的货币张数最少。#include原创 2021-06-20 10:49:15 · 205 阅读 · 0 评论 -
贪心方法知识总结
贪心算法定义例子一般背包问题带期限的作业排序问题定理5.2证明定理5.3的证明利用并查集实现的作业排序贪心的特点贪心的核心定理5.1证明贪心方法的总结定义是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。例子一般背包问题带期限的作业排序问题定理5.2证明定理5.3的证明#include <iostream>using namespace std;/*D(1),…,D(原创 2021-06-20 08:23:14 · 433 阅读 · 0 评论 -
动态规划题集
动态规划题目集合1.使用动态规划策略设计算法,最重要的步骤是:2.流水线证明题3.多段图计算题4.TSP问题设计题5.多段图简答题6.动态规划设计题7.动态规划简答题8.动态规划01背包9.流水线调度问题计算题10.动态规划在实际应用中的适用条件11.最优二分检索树12.动态规划选择题13.动态规划简答题14.动态规划计算题TSP1.使用动态规划策略设计算法,最重要的步骤是:2.流水线证明题3.多段图计算题4.TSP问题设计题贪心算法简介贪心算法(又称贪婪算法)是指,在对问题求解时原创 2021-06-19 17:28:28 · 803 阅读 · 0 评论 -
动态规划知识总结
DP-方法DP-方法动态规划和分治的联系和区别适合用动态规划解决的问题疑问例子1.多段图2.最优二分检索树动态规划和分治的联系和区别1.动态规划和分治相似,都是通过组合子问题的解来求解原问题。2.分治法:将问题划分为互不相交的子问题,递归求解子问题,再将子问题的解组合起来,求解原问题的解。动态规划:应用于子问题重叠的情况,即不同的子问题拥有公共的子子问题。(如果用分治法来求解,会反复求解公共的子子问题;用动态规划就求一次。)该方法通常用来解决多阶段决策过程(前后关联,链状结构,多阶段过程)的最优化原创 2021-06-19 08:40:25 · 383 阅读 · 1 评论 -
快速幂
快速幂#include<iostream>using namespace std;int n, k;int qM(int n, int k) { int res=1; while (k)//k为0表示乘1,退出循环 { if (k & 1) res *=n;//看幂的二进制表示的个位是1还是0,1就要乘上那么多个n k >>= 1;//处理下一位幂的位数 n *= n;//每一位相应的权重依此增大,从个位开始的嘛 } return res;}原创 2021-06-17 16:43:16 · 69 阅读 · 1 评论