自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(105)
  • 收藏
  • 关注

原创 剑指 Offer 13. 机器人的运动范围

深搜+判断即可class Solution {public: bool check(int s,int k){ int sm=0; while(s){ sm+=s%10; s/=10; } return k>=sm; } int ans=0; int dir[4][2]={0,1,1,0,-1,0,0,-1}; int vis[110][110];

2022-03-05 11:16:05 160

原创 剑指 Offer 05. 替换空格

class Solution {public: string replaceSpace(string s) { string res; for(int i=0;i<s.length();i++){ if(s[i]==' ') res+="%20"; else res+=s[i]; } return res; }};

2022-03-05 10:57:37 154

原创 剑指 Offer 12. 矩阵中的路径

直接爆搜加回溯class Solution {public:bool f=0;int dir[4][2]={0,1,1,0,-1,0,0,-1}; void dfs(vector<vector<char> > & b,string &word,int x,int y,int d){ if(f) return ; if(d==word.length()){ f=1; retu

2022-03-05 10:53:15 165

原创 剑指 Offer 11. 旋转数组的最小数字

题解请戳class Solution {public: int minArray(vector<int>& numbers) { int l=0,r=numbers.size()-1; while(l<r){ int mid=(l+r)>>1; if(numbers[mid]<numbers[r]) r=mid; else if(numbers[mi

2022-03-04 11:46:29 76

原创 剑指 Offer 04. 二维数组中的查找

每一列递增,每一行递增在每一行中二分即可 bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { if(matrix.size() == 0 || matrix[0].size() == 0) return false; for(auto &it:matrix){ int l=0,r=it.size()-1;

2022-03-04 11:20:11 53

原创 剑指 Offer 03. 数组中重复的数字

因为所有数字都在 0~n-1 的范围内,且正好有n个数字,也就是说每个数字都可以放在自己大小所对应的位置上因此我们可以直接遍历数组,将数字放在他们对应的位置上,如果发现对应位置被与自己相同的数字占了就说明有重复数字class Solution {public: int findRepeatNumber(vector<int>& nums) { for(int i=0;i<nums.size();i++){ while(nums

2022-03-04 10:54:19 49

原创 剑指 Offer 30. 包含min函数的栈

因为栈满足的是先入后出,因此, 我们假设有A入栈了,然后另外一个比A大的数B也入栈,考虑一下,在A出栈之前,调用min()函数返回值都必不可能是B,也就是说,对于比当前最小值大的数,我们没必要记录下来,基于这个结论,我们可以构造一个辅助栈s2,单调递减class MinStack {public: /** initialize your data structure here. */ stack<int> s1,s2; MinStack() {} v

2022-03-03 09:06:42 49

原创 剑指 Offer 09. 用两个栈实现队列

思路: 维护两个栈A,B, 其中A栈用来入队,B栈用来出队,入队时,直接push到A栈,出队时,考虑B.size(),如果B栈为空,则将A出栈,不断push到B,若A栈也为空,则说明当前队内无元素class CQueue {public:stack<int> s1,s2; CQueue() {} void appendTail(int value) { s1.push(value); } int deleteHead()

2022-03-03 08:54:06 50

原创 剑指 Offer II 010. 和为 k 的子数组

首先写一个最暴力的算法 int subarraySum(vector<int>& nums, int k) { int n=nums.size(); int ans=0; for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++){ int sm=0; for(int k=i;k<=j;k++){

2022-03-03 08:39:12 109

原创 力扣 三数之和

class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { sort(nums.begin(),nums.end()); // 双指针法 vector<vector<int> > res; for(int i=0;i<nums.size();){ i

2022-03-02 22:17:12 48

原创 LeetCode两数之和

不难写出一个o(n²)的解法 vector<int> twoSum(vector<int>& nums, int target) { vector<int> res; for(int i=0;i<nums.size();i++){ for(int j=i+1;j<nums.size();j++){ if(nums[i]+nums[j]==target){

2022-03-02 21:18:37 202

原创 表达式求值

表达式求值模板代码#include<iostream>#include<stack>#include<map>#include<unordered_map>using namespace std;unordered_map<char,int> priority;stack<int> nums;stack<int> op;string s;void eval(){ int a=nums.top(

2022-01-26 17:57:38 717

原创 前缀和+离散化

题目链接:https://www.acwing.com/problem/content/1989/将原题抽象为:找到数轴上计数大于等于2的点的个数代码如下:重点在于如何通过差分数组mp倒推原数组#include<iostream>#include<map>using namespace std;#define ll long longmap<ll,ll> mp;void add(int l,int r){ mp[l]++; mp[r+1

2022-01-24 16:39:01 423

原创 计算两点间次短距离

题目来源:https://leetcode-cn.com/problems/second-minimum-time-to-reach-destination/思路: 用两个距离数组,记录出发点到各点的距离其中dis[i][0] 记录最短距离,dis[i][1]记录(严格)次短距离同时维护dis[i][0]和dis[i][1]即可如何维护?我们从队列中取到一个点时,先判断他是否已经计算出次短距离了,如果是就直接抛弃, 然后判断如果他已经被访问过一次(既,已经计算出最短距离) , 判断它的最短距离

2022-01-24 10:54:16 543

原创 Mysql 分页查询以及效率问题

MySQL分页查询语法如下:select *from userLIMIT X,Y上述代码表示,选出表中x+1 到 x+y行的数据但实际上,mysql执行的本质是取出从第一行到第x+y行的全部内容,然后丢弃前x行的内容,因此在偏移量(x)极大时,速度会非常慢。...

2021-12-21 23:06:04 534

原创 关于maven项目中的pom的resources标签说明

maven项目中的pom的resources标签说明resources标签指明了maven项目的加载方式当我们不配置它是,默认是这样的:<resource> <directory>src/main/resources</directory> <includes> <include>**/*.*</include> </includes> <filtering&

2021-12-15 22:08:07 1719

原创 21/12/14 力扣每日一题

https://leetcode-cn.com/problems/course-schedule-iii/class Solution {public: static bool cmp(vector<int> &a,vector<int> &b){ return a[1]<b[1]; } int scheduleCourse(vector<vector<int>>& courses) {

2021-12-14 10:23:45 1014

原创 力扣270场周赛: 树上节点的共同祖先-记录欧拉路径

欧拉路径的记录1.直接枚举class Solution {public: vector<int> findEvenNumbers(vector<int>& d) { // 从给定的所有数字中取出三位偶数,按递增顺序排列 set<int> ans; for(int i=0;i<d.size();i++) { if(d[i]==0) continue;

2021-12-05 14:10:25 101

原创 ACWing例题

数组中第k小的数:https://www.acwing.com/problem/content/submission/code_detail/9193612/主要思路:我们采用类似快排的算法,每次给函数指定一个起点l和终点r,我们选取一个哨兵(a[l]),然后进行快排,将它放在合适的位置上,使得它左边的数都比他小,右边的数都比他大。 然后我们判断k与a[l]的位置关系,选择递归处理左半部分/右半部分即可。每次将数组分半,因此复杂度=(n/2+n/4+n/8…)=2n#include<iost

2021-12-04 11:55:01 336

原创 二分搜索模板

二分搜索

2021-12-03 20:07:00 439

原创 归并排序思想,以及代码实现

归并排序将区间不断二等分,二等分…然后一个接一个合并假设merge_sort(int a[],int l,int r)为 此次划分的区间为l到r,如何继续划分以及排序的问题代码如下:int a[N],temp[N];void merge_sort(int a[],int l,int r){ if(l>=r) return ; int mid=l+r>>1; // 划分区间,使得l到mid有序,mid+1到r有序 merge_sort(a,l,mid); m

2021-12-02 11:11:15 503

原创 快速排序思想以及代码实现

快速排序基于分治算法算法步骤:确定分界点x移动数组内的元素,让<=x的数据放在 x的左边,>=x的数据放在x的右边 (记得要将x放在中间)递归去处理x的左半部分和右半部分思想的C++简单实现:void quick_sort(int a[],int l,int r){ if(l+1>=r) return ; vector<int> left,right,eq; for(int i=l;i<r;i++){ if(a[i]>a[l]){

2021-12-01 23:00:19 65

原创 力扣:优先队列合并K个升序链表以及衍生

优先队列合并K个升序链表题目:https://leetcode-cn.com/problems/merge-k-sorted-lists/代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x)

2021-11-29 11:44:21 158

原创 力扣268周周赛

力扣268周周赛1.https://leetcode-cn.com/problems/two-furthest-houses-with-different-colors/数据范围这么小,直接暴力:class Solution {public: int ans=-1; int maxDistance(vector<int>& colors) { for(int i=0;i<colors.size();i++){ fo

2021-11-21 20:25:20 405

原创 c++中map的特性

c++中map的特性刚刚在力扣做题:https://leetcode-cn.com/problems/longest-harmonious-subsequence/wa代码是这样的:class Solution {public:unordered_map<int,int> mp; int findLHS(vector<int>& nums) { /* 最大最小差别不超过1 既我们可以用哈希表统计出所有取值

2021-11-20 00:22:18 517

原创 蓝桥杯中的dp例题

题目:http://lx.lanqiao.cn/problem.page?gpid=T2893思路都在代码里:#include<iostream>#include<cmath>#define N 100001using namespace std;int dp[101][N]; //所有砝码质量始终不会超过100010,故可以用dp[i][j]=1表示前i-1个物品可以测量出质量j,反之则不可以 int w[101];int main(){ int

2021-11-18 19:56:08 215

原创 算法比赛的BFS例题和模板

题目:[蓝桥杯2015决赛]穿越雷区http://oj.ecustacm.cn/problem.php?id=1266AC代码,思路都在注释里#include<iostream>#include<vector>#include<queue>using namespace std;int dir[][2]={0,1,0,-1,1,0,-1,0}; //定义了四个方向 struct node{ int x,y; //记录当前位置的坐标 int v;

2021-11-18 16:54:17 122 1

原创 深度优先搜索DFS例题和模板

题目来源:[蓝桥杯2015初赛]牌型种数http://oj.ecustacm.cn/problem.php?id=1253AC代码: 思路都在注释里#include<iostream>using namespace std;int ans=0;void dfs(int k,int n){ //k为当前将要拿哪张牌(注意是将要拿,而不是已经拿了),k取1-13 // n为当前手里有多少张牌,n取1-13 if(k==14&&n==13) {

2021-11-18 16:15:46 130

原创 在算法比赛中,如何判断自己会不会超时?

在算法比赛中,如何判断自己会不会超时?先看题目:http://oj.ecustacm.cn/problem.php?id=1026输入的数字最大为N=100000(10的五次方)如果我们采用最简单的冒泡排序o(n²),最终CPU将执行N*N≈10的10次方左右的运算次数,而一般的测评机一秒钟可以执行5X10的8次方左右条指令,因此该算法将运行20S左右,必然超时。因此采用快速排序,复杂度为o(n*log(n)),即可通过。...

2021-11-18 15:13:53 905

原创 算法竞赛中有多组输入应该如何处理

数值统计Description统计给定的n个数中正数的个数Input输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数;Output对于每组输入数据,输出一行a,表示给定的数据正数的个数。Sample Input3 1 0 -22 -1 -1Sample Output10#include<iostream>#define N 101int arr[N];using namespace std;

2021-11-18 14:50:16 383

原创 力扣 318和位运算集合

学到了位运算的操作:将集合映射到一个数字上,无论是比较还是入集合/出集合都很方便!设s1,s2为集合:将第i个项目入集合s1:s1|=(1<<i) // 无论i之前是否在集合中s1+=(1<<i) // 一定要保证i之前不在集合中,不然会出错将第i个项目出集合s1-=(1<<i) //一定要保证i之前在集合中比较两个集合是否相同s1==s2解决问题的代码:class Solution {public: int maxProduct(v

2021-11-17 09:16:12 55

原创 记一次Base64编码的应用

Base64编码先来说一下我这次的业务需求,我们这次的项目是: 用户在浏览器的画板上绘图,然后在鼠标松开的时候,前端需要记录用户的笔迹,即保存用户画好的图,传给后端,然后后端将数据解码,传递给机器学习模型,机器学习模型根据图片找出最匹配用户图片的图片,反馈索引给用户因为机器学习模型的输入只要求是黑白图,因此前端传值可以传一个比特流过来(将0视为白色,1视为黑色),后端再根据比特流构图即可现在需要解决以下问题如何将01字符串转为比特流(本质上是把8个比特位转为一个char型变量)比特流如何进行B

2021-11-15 00:51:22 1593

原创 力扣 375

375. 猜数字大小 IIhttps://leetcode-cn.com/problems/guess-number-higher-or-lower-ii/题目的要求是: 求出诸如此类的树的所有子树的最大权值中的最小值class Solution {public:// 200 int dp[201][201]; int get(int i,int j){ //记为从i->j的猜出所有情况的最少消耗 if(i>=j) return 0;

2021-11-12 12:47:41 203

原创 CSP 2020-9

1.称监测点查询#include<iostream>#include<algorithm>using namespace std;#define ll long longll px,py;#define N 210struct node{ ll x,y,p; bool operator<(const node &nd)const{ ll dis1=(this->x-px)*(this->x-px)+(this->y-py)*(thi

2021-11-05 12:08:41 87

原创 CSP 2020-06

1.线性分类器设点的坐标为(x0,y0)直线坐标为A+BX+CY=0则将点坐标代入直线方程,结果若为负则在该直线下方,反之在上方。很重要的公式!!#include<iostream>using namespace std;#define N 1010#define ll long longll x[N],y[N],tp[N]; //-1代表a,1代表b ll res[N];int n,m;int main(){ cin>>n>>m; int

2021-11-04 20:19:25 57

原创 CSP 2019-12

1.报数看注释即可:#include<iostream>#include<cstring>using namespace std;int is_7(int x){ if(x%7==0) return 1; while(x){ if(x%10==7) return 1; x/=10; } return 0;}int n; //记录当前报了多少个数字int t;//记录当前报到了哪个数字, t不一定等于nint pass[4];int main(){

2021-11-03 13:56:35 52

原创 CSP 2019-9

1.小明种苹果#include<iostream>#include<vector>#include<cstring>using namespace std;#define ll long longll n,m,t=0,k,p,tp;int main(){ cin>>n>>m; for(int i=0;i<n;i++){ ll now,sum=0; cin>>now; for(int j=0;j&lt

2021-10-30 23:02:57 52

原创 前端后端传数组的正确做法

前端正常传值即可var app = new Vue({ el: "#app", data: { arr:[1,2,3] }, mounted: function () {}, methods: { post:function(){ var that=this

2021-10-29 19:01:51 1926

原创 CSP 2019-3

2.24点比较恶心的小模拟题,有几个小技巧:1.有 - 时,直接op栈push + , num 栈push 负下一个数字即可2.遇到乘法或者除法时直接和下一个数计算好结果再push到num栈里#include<iostream>#include<stack>using namespace std;int cal(int a,char c,int b){ if(c=='+') return a+b; if(c=='-') return a-b; if(c==...

2021-10-28 13:01:35 70

原创 MySQL的语句顺序和执行顺序

语句顺序SELECT DISTINCT < select_list >FROM < left_table > < join_type >JOIN < right_table > ON < join_condition >WHERE < where_condition >GROUP BY < group_by_list >HAVING < having_condition >ORDER .

2021-10-26 22:25:24 54

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除