leetcode
BOWWOB
社畜
展开
-
leetcode 844. 比较含退格的字符串
题目链接简单题:运用到了栈的思想class Solution {public: string cut(string s){ stack<char> stk; for(int i=0;i<s.size();i++){ if(s[i]!='#') stk.push(s[i]); else{ if(!stk.empty())原创 2020-10-20 00:46:37 · 88 阅读 · 0 评论 -
二刷算法基础题DAY8
前缀和题目链接#include<iostream>using namespace std;const int N=100010; int a[N];int s[N];int n,m;int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ cin>>a[i]; s[i]=s[i-1]+a[i]; } while(m--){ .原创 2020-09-29 10:55:27 · 126 阅读 · 0 评论 -
二刷算法基础题DAY4
爬楼梯:题目链接class Solution {public: int climbStairs(int n) { if(n==1) return 1; if(n==2) return 2; int res=0; int a=1,b=2; for(int i=3;i<=n;i++){ res=a+b; a=b; b=res;原创 2020-09-24 02:15:49 · 99 阅读 · 0 评论 -
二刷算法基础题DAY3
课程表Ⅱ:题目链接class Solution {public: int m[2000][2000]; int indegree[2000]; vector<int> bfs(vector<int> res, int numCourses){ queue<int> q; for(int i=0;i<numCourses;i++){ if(indegree[i]==0){原创 2020-09-22 11:17:06 · 195 阅读 · 0 评论 -
二刷算法基础题DAY1
全排列:(直接用next_permutation解)模板全排列class Solution {public: vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>> res; sort(nums.begin(),nums.end()); do{ res.push_back(n原创 2020-09-20 11:38:10 · 73 阅读 · 0 评论 -
个人 --贪心算法 -总结--记录
贪心算法无固定套路,结论难以证明,需要多做,多种题型股票交易–题目连接#include<iostream>using namespace std;const int N=100000;int n;int res;int a[N];int find_h(int index){ for(int i=index+1;i<=n;i++){ if(a[i]<a[index]){ index=i;原创 2020-09-14 11:50:00 · 144 阅读 · 0 评论 -
刷题记录----leetcode ,dp问题3
区间dp问题:1.合并石子#include<iostream>#include<queue>using namespace std;const int N=300 +10;int a[N];int s[N];int f[N][N];int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; s[i]=a[i];原创 2020-09-11 22:45:54 · 103 阅读 · 0 评论 -
leetcode -回文数
回文数 题目连接字符串解 回文:热热身class Solution {public: bool isPalindrome(int x) { string s=to_string(x); string s1,s2; int n=s.size()%2==0?s.size()/2:s.size()/2+1; for(int i=0;i<n;i++){ s1+=s[i]; }原创 2020-09-11 01:09:43 · 79 阅读 · 0 评论 -
leetcode--7. 整数反转
反转整数–题目连接字符串热热身反转整数,考虑溢出class Solution {public: string re(string s){ string res; if(s[0]=='-'){ res+='-'; } for(int i=s.size()-1;i>=0;i--){ res+=s[i]; if(s[0]=='原创 2020-09-11 00:53:30 · 81 阅读 · 0 评论 -
剑指 Offer 50. 第一个只出现一次的字符
简单题化解一下压力。剑指 Offer 50. 第一个只出现一次的字符这道简单的题目反应出我对map的操作是非常的不足。class Solution {public: char firstUniqChar(string s) { if(s=="") return ' '; map<char,int> mp; int res=0; for(int i=0;i<s.size();i++){原创 2020-09-10 20:00:39 · 66 阅读 · 0 评论 -
刷题记录----leetcode ,dp问题2
1.最长公共子序列#include <iostream>#include <string>using namespace std;const int N=1000+10; string s1=" ",s2=" ";string ss1,ss2;int f[N][N];int main(){ int n,m; cin>>n>>m; cin>>ss1>>ss2; s1+=ss1;原创 2020-09-10 04:37:35 · 183 阅读 · 0 评论 -
刷题记录----leetcode ,dp问题
dp解决:1.leet-code 70. 爬楼梯class Solution {public: int climbStairs(int n) { int f[n+10]; fill(f,f+n+10,0); f[1]=1; f[2]=2; for(int i=0;i<=n;i++){ if(i>2) f[i]=f[i-1]+f[i-2]; }原创 2020-09-09 04:15:58 · 196 阅读 · 0 评论 -
leetcode 最长上升子序列
给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数N。第二行包含N个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤1000,−109≤数列中的数≤109输入样例:73 1 2 1 8 5 6输出样例:4题目链接#include <iostream>#include<algorithm>using namespace std;int n;int res=0;int arr[10原创 2020-09-06 21:21:49 · 129 阅读 · 0 评论 -
Leetcode 摘花生 简单DP
题目链接/*输入样例:22 21 13 42 32 3 41 6 5输出样例:816*/#include<iostream>#include <algorithm>using namespace std;int n;int row,col;int cnt;int res[100+10];int arr[100+10 ][100+10 ];void solve(){ int dp[100+10][100+10]; fo原创 2020-09-06 19:33:48 · 175 阅读 · 0 评论 -
算法比赛复习
算法部分dfs+回溯1.岛屿的个数2.岛屿的最大面积3.全排列4.八皇后 (n皇后)5.解迷宫6.踩方格7.2n皇后(n皇后变种)8.括号生成9.单源到单源最短路径(这个和迷宫一个道理,返回最短的路径就可以了,还有一个剪枝的技巧,一旦tem_len>min_len 直接return大白话就是,如果在路径长度累加的过程中,一旦出现当前累加长度大于原来存储的最短长度,那么不需要继续走下去了,直接返回 )10.盾神与砝码称重BFS1.迷宫求解2.最短路径(格子的长度为1.原创 2020-08-31 21:14:29 · 1874 阅读 · 0 评论 -
794. 有效的井字游戏 leetcode
有效的井字游戏用字符串数组作为井字游戏的游戏板 board。当且仅当在井字游戏过程中,玩家有可能将字符放置成游戏板所显示的状态时,才返回 true。该游戏板是一个 3 x 3 数组,由字符 " ",“X” 和 “O” 组成。字符 " " 代表一个空位。以下是井字游戏的规则:玩家轮流将字符放入空位(" ")中。第一个玩家总是放字符 “X”,且第二个玩家总是放字符 “O”。“X” 和 “O” 只允许放置在空位中,不允许对已放有字符的位置进行填充。当有 3 个相同(且非空)的字符填充任何行、列或.原创 2020-08-23 17:04:27 · 133 阅读 · 0 评论 -
蓝桥杯-试题 算法训练 Anagrams问题
试题 算法训练 Anagrams问题资源限制时间限制:1.0s 内存限制:512.0MB问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。例如,“Unclear”和“Nuclear”、“Rimon”和“MinOR”都是Anagrams。编写一个程序,输入两个单词,然后判断一下,这两个单词是否是Anagrams。每一个单词的长度不会超过80个字符,而且是大小写无关的。 输入格式:输入有两行,分别为两个单词。 输原创 2020-08-22 14:51:22 · 160 阅读 · 0 评论 -
蓝桥杯--出现次数最多的整数,取最小的整数
[蓝桥杯][算法训练]出现次数最多的整数时间限制: 1Sec 内存限制: 128MB 提交: 104 解决: 32题目描述编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。输入第一行是一个整数N,N £ 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。输出输出只有一行,即原创 2020-08-18 15:23:18 · 256 阅读 · 0 评论 -
蓝桥杯练习题目--快速幂-算法
题目链接给定A, B, P,求(A^B) mod P。输入输入共一行。第一行有三个数,N, M, P。输出输出共一行,表示所求。共10组数据对100%的数据,A, B为long long范围内的非负整数,P为int内的非负整数。样例输入2 5 3样例输出2#include <stdio.h>#include <stdlib.h>#include <time.h>#include <iostream>#include<al原创 2020-08-16 00:23:49 · 245 阅读 · 0 评论 -
背包九讲-背包问题代码奉上
01背包题目链接有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000输入样例4原创 2020-08-15 16:55:28 · 404 阅读 · 0 评论 -
NOIP 2015 .金币 模拟类型题
【题目描述】国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币。请计算在前K天里,骑士一共获得了多少金币。【输入】只有1行,包含一个正整数K,表示发放金币的天数。【输出】只有1行,包含一个正整数,即骑士收到的金币数。【输入原创 2020-08-15 01:58:02 · 223 阅读 · 0 评论 -
蓝桥杯练习题 01字串
试题 基础练习 01字串资源限制时间限制:1.0s 内存限制:256.0MB问题描述对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:0000000001000100001100100请按从小到大的顺序输出这32种01串。输入格式本试题没有输入。输出格式输出32行,按从小到大的顺序每行一个长度为5的01串。样例输出00000000010001000011<以下部分省略>dfs轻松搞定。一年前,我写这题是枚举循环做原创 2020-08-12 17:52:08 · 99 阅读 · 0 评论 -
三数之和 leetcode算法题()
三数之和给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]差最后两个数据没过,可把我急坏了。不过至少思路是正确的。只是算法的时间复杂度没有达到要求。class Solution {p.原创 2020-08-12 03:21:03 · 109 阅读 · 0 评论 -
BFS逆向---01矩阵 leetcode
01 矩阵给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1:输入:0 0 00 1 00 0 0输出:0 0 00 1 00 0 0示例 2:输入:0 0 00 1 01 1 1输出:0 0 00 1 01 2 1注意:给定矩阵的元素个数不超过 10000。给定矩阵中至少有一个元素是 0。矩阵中的元素只在四个方向上相邻: 上、下、左、右。一开始的时候是想到BFS,从某个1出发,然后扩散,找到0.原创 2020-08-11 14:39:00 · 226 阅读 · 0 评论 -
测试斐波那契--使用不同的算法 以及 对于输入的输出 用时
测试斐波那契–使用不同的算法 以及 对于输入的输出 用时以下两段代码,只是注释和解除注释展示两个算法。1.直接递归#include <stdio.h>#include <stdlib.h>#include <time.h>#include <iostream>using namespace std;int f = 1, r = 0, t;//直接递归解,n=38 超时 int ff(int n) { if (n == 1原创 2020-08-11 10:19:14 · 176 阅读 · 0 评论 -
dfs+回溯 括号生成算法
题目链接22. 括号生成数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]class Solution {public: int nn; string s; void dfs(vector<string>& res, int l, int r){原创 2020-08-10 16:08:20 · 199 阅读 · 0 评论 -
dfs+回溯 - 2n皇后 算法题
2n皇后是 n皇后的拓展,实际上都差不多,只是在放皇后的时候,同时再多放一个不同的皇后。以下是不同点,完整代码就不搞了,原理和n皇后一样n皇后传送门void dfs(int x, int deep){ if (deep == n) { t++; return; } for (int i = 0; i < n; i++) if (!v1[i]&&mp[x][i]==0) if (fun(x, i, 2)) { mp[x][i] = 2; v原创 2020-08-10 13:01:15 · 134 阅读 · 0 评论 -
枚举上头
写上头了,直接枚举情况。(上头了上头了,但是我)class Solution {public: bool valid(vector<string>& board,int X, int O){ int flag1=0; int flag2=0; for(int i=0;i<=2;i++){ if((board[i][0]=='X'||board[i][0]=='O')&& board[原创 2020-08-10 12:30:01 · 116 阅读 · 0 评论 -
递归+记忆化 leetcode 青蛙跳台阶
题目链接本来想找一些纯粹的递归题,结果发现数据都挺大的,每次递归都要记忆化,不然递归都过不了。剑指 Offer 10- II. 青蛙跳台阶问题一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1提示:0 <= n <=原创 2020-08-10 11:13:12 · 272 阅读 · 0 评论 -
记忆化搜索---泰波那契-----斐波那契之同类举一反三
题目链接1137. 第 N 个泰波那契数泰波那契序列 Tn 定义如下:T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2给你整数 n,请返回第 n 个泰波那契数 Tn 的值。示例 1:输入:n = 4输出:4解释:T_3 = 0 + 1 + 1 = 2T_4 = 1 + 1 + 2 = 4示例 2:输入:n = 25输出:1389537提示:0 <= n <= 37答案保证是一个 32原创 2020-08-10 10:07:54 · 178 阅读 · 0 评论 -
dfs+回溯算法 -poj踩方格
题目连接4982:踩方格查看提交统计提问总时间限制: 1000ms 内存限制: 65536kB描述有一个方格矩阵,矩阵边界在无穷远处。我们做如下假设:a. 每走一步时,只能从当前方格移动一格,走到某个相邻的方格上;b. 走过的格子立即塌陷无法再走第二次;c. 只能向北、东、西三个方向走;请问:如果允许在方格矩阵上走n步,共有多少种不同的方案。2种走法只要有一步不一样,即被认为是不同的方案。输入允许在方格上行走的步数n(n <= 20)输出计算出的方案数量样原创 2020-08-10 04:17:56 · 234 阅读 · 0 评论 -
题目(题集)-算法学习阶段性小总结-回顾
dfs+回溯1.岛屿的个数2.岛屿的最大面积3.全排列4.八皇后 (n皇后)5.解迷宫原创 2020-08-10 03:13:14 · 174 阅读 · 0 评论 -
解迷宫算法
dfs+回溯算法解迷宫(自己写的玩的):#include <iostream>using namespace std; // 题目:给出迷宫大小、迷宫简图、起点坐标,终点坐标。求到达终点的路径数和最短路径所需的步数。 int maze[10][10]; int book[10][10] = {0}; // 标记该坐标是否走过 int dx[4] = {1,0,-1,0}; //方向 int dy[4] = {0,1,0,-1}; int ans = 0; //原创 2020-08-10 03:12:09 · 438 阅读 · 0 评论 -
dfs+回溯 - n皇后(八皇后)leetcode
n皇后 (八皇后):(不仅仅是分割的矩阵的对角线,而是所有对角线)题目连接class Solution {public: vector< vector<string>> res; vector< vector<int>> vis; int nn = 0; int check(int row, int col) { for (int i = nn - 1; i >= 0; --i) {原创 2020-08-10 03:08:56 · 161 阅读 · 0 评论 -
dfs+回溯 典型题目-leetcode 全排列算法
题目导航class Solution {public: vector<vector<int>> rr; vector<int> res; vector<int> vis; void dfs(vector<int>& nums) { if (res.size() == nums.size()) { rr.push_back(res);原创 2020-08-10 01:14:20 · 166 阅读 · 0 评论 -
岛屿类型算法题-leetcode岛屿的最大面积
给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,原创 2020-08-08 03:12:40 · 328 阅读 · 0 评论 -
两种解法:leetcode 最长不含重复字符的子字符串
请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。提原创 2020-08-07 23:12:03 · 116 阅读 · 0 评论 -
题目 1548: [蓝桥杯][算法提高VIP]盾神与砝码称重
时间限制: 1Sec 内存限制: 128MB 提交: 782 解决: 331题目描述有一天,他在宿舍里无意中发现了一个天平!这 个天平很奇怪,有n个完好的砝码,但是没有游码。盾神为他的发现兴奋不已!于是他准备去称一称自己的东西。他准备好了m种物品去称。神奇的是,盾神一早就 知道这m种物品的重量,他现在是想看看这个天平能不能称出这些物品出来。但是盾神稍微想了1秒钟以后就觉得这个问题太无聊了,于是就丢给了你。数据规模和约定1< =n< =24, 1< =m< =10.输入原创 2020-08-07 00:04:25 · 440 阅读 · 0 评论 -
岛屿DFS题。
这题颇有感触。给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:[[‘1’,‘1’,‘1’,‘1’,‘0’],[‘1’,‘1’,‘0’,‘1’,‘0’],[‘1’,‘1’,‘0’,‘0’,‘0’],[‘0’,‘0’,‘0’,‘0’,‘0’]]输出: 1示例 2:输入:[[‘1’,‘1’,‘0’,‘0’,‘0’原创 2020-08-06 21:59:39 · 164 阅读 · 0 评论 -
剑指 Offer 10- I. 3种解法-斐波那契数列
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:1示例 2:输入:n = 5输出:5提示:0 <=原创 2020-08-06 01:38:29 · 188 阅读 · 0 评论