自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Skyed_blue的博客

emm...fresh power

  • 博客(164)
  • 收藏
  • 关注

原创 高并发学生选课系统设计

高并发选课系统设计简述学生选课系统类似于秒杀系统,都是要在一个时间段内抗住高并发。因此我们的学生选课系统可以按照秒杀系统来设计。学生选课系统的QPS其实远远不及秒杀系统,毕竟一个学校最多也就同时几千个人选课,因此在架构上可以不用设计的太麻烦,只要能抗住高并发,让学生都有操作空间就可。但本文想抛开现实,按照秒杀系统来好好设计一下选课系统。开发技术SpringCloud,Mybatis-plus,MySQL,Redis,redisson,RabbitMQ,Quartz数据表设计teacher(教师

2021-02-27 15:46:21 5263 11

原创 【算法基础总结】算法基础 (算法竞赛,面试...)

算法基础​ (By: Skyed_blue 转载注明作者)文章目录算法基础前言dfs(深度优先遍历)bfs(广度优先遍历)二分查找(二分枚举)并查集位运算双指针栈(stack)字典树(trie)前缀和初等数论贪心动态规划(dp)结语前言本篇为算法基础整合,主要偏向于对基础算法的总结和整理。本篇将会介绍个人刷算法题的一些经验,基础算法的简要描述,基础算...

2020-03-16 23:38:10 2587 2

原创 【leetcode】rand7()实现rand10()

已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。不要使用系统的 Math.random() 方法。示例 1:输入: 1输出: [7]示例 2:输入: 2输出: [8,4]示例 3:输入: 3输出: [8,1,10]提示:rand7 已定义。传入参数: n 表示 rand10 的调用次数。进阶:rand7()调用次数的 期望值 是多少 ?你能否尽量少调用 rand7() ?思路分析首先,r

2021-03-23 12:23:57 345

原创 【美团2021校招第十场】贪心,贪心,模拟,不会...

第一题[编程题]淘汰分数时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 256M,其他语言512M某比赛已经进入了淘汰赛阶段,已知共有n名选手参与了此阶段比赛,他们的得分分别是a_1,a_2….a_n,小美作为比赛的裁判希望设定一个分数线m,使得所有分数大于m的选手晋级,其他人淘汰。但是为了保护粉丝脆弱的心脏,小美希望晋级和淘汰的人数均在[x,y]之间。显然这个m有可能是不存在的,也有可能存在多个m,如果不存在,请你输出-1,如果存在多个,请你输出符合条件的最低的分数线。输入描述

2021-03-15 20:44:52 977

原创 【leetcode】盈利计划(二维费用01背包)

集团里有 n 名员工,他们可以完成各种各样的工作创造利润。第 i 种工作会产生 profit[i] 的利润,它要求 group[i] 名成员共同参与。如果成员参与了其中一项工作,就不能参与另一项工作。工作的任何至少产生 minProfit 利润的子集称为盈利计划。并且工作的成员总数最多为 n 。有多少种计划可以选择?因为答案很大,所以 返回结果模 10^9 + 7 的值。示例 1:输入:n = 5, minProfit = 3, group = [2,2], profit = [2,3]输出:2

2021-03-14 20:43:16 328

原创 《需求工程——软件建模与分析》读书笔记

《需求工程——软件建模与分析》,整体来说这本书内容还是挺多的。我先从目录看起,看看这本书的知识框架是怎样的,整个需求分析会涉及到哪些知识。该书共分为5个部分:绪论,需求获取,需求分析,需求的格式化与验证,需求的管理及工程管理。下面将会简述每一部分部分里面的章节并结合自己的项目和Excel截取的记录做出一些思考,算是我对这本书的心得吧。第一章:需求工程导论​ 主要讲解了需求问题的具体原因分析,需求工程(requirement engineering)的简介,重要性和复杂性,然后引出需求工程师这一职业。

2020-12-25 23:07:20 1579

原创 【腾讯2020校招】压缩算法(栈)

时间限制:C/C++ 2秒,其他语言4秒空间限制:C/C++ 256M,其他语言512M小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为m|S,例如字符串ABCABCABC将会被压缩为[3|ABC],现在小Q的同学收到了小Q发送过来的字符串,你能帮助他进行解压缩么?输入描述:输入第一行包含一个字符串s,代表压缩后的字符串。S的长度<=1000;S仅包含大写字母、[、]、|

2020-11-19 17:50:53 319

原创 【leetcode】统计字典序元音字符串的数目(dp,3种写法)

给你一个整数 n,请返回长度为 n 、仅由元音 (a, e, i, o, u) 组成且按 字典序排列 的字符串数量。字符串 s 按 字典序排列 需要满足:对于所有有效的 i,s[i] 在字母表中的位置总是与 s[i+1] 相同或在 s[i+1] 之前。示例 1:输入:n = 1输出:5解释:仅由元音组成的 5 个字典序字符串为 [“a”,“e”,“i”,“o”,“u”]示例 2:输入:n = 2输出:15解释:仅由元音组成的 15 个字典序字符串为[“aa”,“ae”,“ai”,“ao”

2020-11-10 20:50:05 395

原创 【leetcode】可以到达的最远建筑 (贪心)

给你一个整数数组 heights ,表示建筑物的高度。另有一些砖块 bricks 和梯子 ladders 。你从建筑物 0 开始旅程,不断向后面的建筑物移动,期间可能会用到砖块或梯子。当从建筑物 i 移动到建筑物 i+1(下标 从 0 开始 )时:如果当前建筑物的高度 大于或等于 下一建筑物的高度,则不需要梯子或砖块如果当前建筑的高度 小于 下一个建筑的高度,您可以使用 一架梯子 或 (h[i+1] - h[i]) 个砖块如果以最佳方式使用给定的梯子和砖块,返回你可以到达的最远建筑物的下标(下标

2020-11-04 20:14:58 654

原创 校门外的树 (合并区间,线段树)

https://www.luogu.com.cn/problem/P1047思路分析:因为最后只需要一次查询,因此一个直观的想法是将所有的区间合并,用总数减去区间长度即可。关键就是如何合并区间,这个可能不太好想,需要点思维。总体时间复杂度O(nlgn)合并区间可以参考这篇博客:https://blog.csdn.net/Skyed_blue/article/details/109467628#include <iostream>#include <algorithm>.

2020-11-03 13:55:36 229

原创 【leetcode】合并区间 (贪心)

给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: intervals = [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: intervals = [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。注意:输入类型已于2019年4月15日更改。 请重置默认代码定义以获取新方法

2020-11-03 13:41:01 145

原创 四方定理 (dp,二维费用背包)

思路分析:我一开始没往背包那想,我想的是dp[i][j]表示 i 值 剩余 j 次分解位的方案总数。第一层 for 遍历 i 值 (1-32768)第二层for 遍历 j 分解位个数 (0-4)第三层for 遍历 k 平方数 (1-sqrt(i))dp[i][j] = dp[i-k*k][j-1]这样写理论上可以实现,但是无法去重。假设i=5, j=1,k 可以取 1, 2. k取1就由dp[4][0]推来,k取2就由dp[1][0]推来。这样就包含了[1,2]和[2,1]两种情况。后来看.

2020-10-30 12:21:28 272

原创 摆花 (dp,背包,各种优化)

题目描述小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆。通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号。为了在门口展出更多种花,规定第i种花不能超过ai 盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。试编程计算,一共有多少种不同的摆花方案。输入格式第一行包含两个正整数n和m,中间用一个空格隔开。第二行有n个整数,每两个整数之间用一个空格隔开,依次表示a1,a2,…,an输出格式一个整数,表示有多少种方案。注意:因为方案数可能很

2020-10-30 11:40:28 219

原创 装箱问题 (dp,两种方法)

题目描述有一个箱子容量为V(正整数,0≤V≤20000),同时有n个物品(0<n≤30,每个物品有一个体积(正整数)。要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。输入格式1个整数,表示箱子容量1个整数,表示有n个物品接下来n行,分别表示这n个物品的各自体积输出格式1个整数,表示箱子剩余空间。输入输出样例输入2468312797输出0思路分析其实就是背包问题。但是在做的时候想了个新思路。令dp[i] = true表示在 i 体积可以被若干个箱

2020-10-29 10:59:00 2311

原创 【蓝桥杯】调手表(bfs)

小明买了块高端大气上档次的电子手表,他正准备调时间呢。在 M78 星云,时间的计量单位和地球上不同,M78 星云的一个小时有 n 分钟。大家都知道,手表只有一个按钮可以把当前的数加一。在调分钟的时候,如果当前显示的数是 0 ,那么按一下按钮就会变成 1,再按一次变成 2 。如果当前的数是 n - 1,按一次后会变成 0 。作为强迫症患者,小明一定要把手表的时间调对。如果手表上的时间比当前时间多1,则要按 n - 1 次加一按钮才能调回正确时间。小明想,如果手表可以再添加一个按钮,表示把当前的数加 k 该多

2020-10-26 21:45:56 384

原创 灾难预警(bfs+二分)

众所周知,浙农林是一条河。 由于浙江农林大学的特殊地形,当你在下雨后漫步在农林大路上的时候难免会出现一脚踩进一个水坑的情况的情况。而农农非常不喜欢踩到水坑的感觉,请你帮忙设计一个程序来帮助农农判断他能否在不踩入水坑的情况下回到寝室。已知,浙江农林大学可以表示为一个 N * N 的矩阵。对于每个位置有一个海拔数据 h[i][j],当水位高度大于 h[i][j] 的时候,这个位置就会形成一个水坑。农农现在的坐标是 (1, 1), 他的宿舍位于 (n, n).农农只可以沿着上下左右四个方向走。假如农农

2020-10-24 20:49:09 278

原创 【蓝桥杯】k倍区间 (前缀和+分析+数论)

资源限制时间限制:2.0s 内存限制:256.0MB问题描述  给定一个长度为N的数列,A1, A2, … AN,如果其中一段连续的子序列Ai, Ai+1, … Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间。你能求出数列中总共有多少个K倍区间吗?输入格式  第一行包含两个整数N和K。(1 <= N, K <= 100000)  以下N行每行包含一个整数Ai。(1 <= Ai <= 100000)输出格式  输出一个整数,代表K

2020-10-13 21:10:13 312

原创 【蓝桥杯】分巧克力 (二分)

资源限制时间限制:1.0s 内存限制:256.0MB问题描述儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足:形状是正方形,边长是整数大小相同例如一块6x5的巧克力可以切出6块2x2的巧克力或者2块3x3的巧克力。当然小朋友们都希望得到的巧克力尽可能大,你能帮小Hi计算出最大的边长是多少么?输入格式

2020-10-13 20:05:59 221

原创 【dfs】深度优先遍历剖析(含泪推荐)

文章目录前言dfs原理分析dfs题型举例dfs代码细节前言我学的第一个算法就是dfs. 直到一年多后的今天,为了准备比赛我重新复习算法,我发现自己第一个学的算法,dfs,居然写的如此的慢,如此纠结。虽然最后能调试成功,但是感觉费了不少精力。一开始我准备了8道dfs复习,到最后我把这8道题用dfs统统做了四遍,用着不同的写法。终于,我明白自己为什么dfs写的如此之慢了。下面,我将我的血泪史总结出一份自己满意的答卷。dfs原理分析其实,dfs就是暴力枚举。因此题目中遇到需要枚举才能取得结果的题都可以用

2020-10-07 16:43:22 354 1

原创 Stall Reservations (贪心, 区间问题)

Stall ReservationsOh those picky N (1 <= N <= 50,000) cows! They are so picky that each one will only be milked over some precise time interval A…B (1 <= A <= B <= 1,000,000), which in...

2020-03-13 13:34:32 429

原创 OpenJ_Bailian - 4151 电影节 (贪心)

大学生电影节在北大举办! 这天,在北大各地放了多部电影,给定每部电影的放映时间区间,区间重叠的电影不可能同时看(端点可以重合),问李雷最多可以看多少部电影。Input多组数据。每组数据开头是n(n<=100),表示共n场电影。接下来n行,每行两个整数(0到1000之间),表示一场电影的放映区间n=0则数据结束Output对每组数据输出最多能看几部电影Sample Input8...

2020-03-13 12:05:28 274

原创 【leetcode】跳跃游戏 II (贪心)

给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。说明:假设你总是可以到达数组的最后一个位置。链接:...

2020-03-11 20:33:36 353

原创 【leetcode】跳跃游戏 (贪心)

给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达...

2020-03-11 19:46:03 273

原创 【PTA】L2-032 彩虹瓶 (25分)

彩虹瓶的制作过程(并不)是这样的:先把一大批空瓶铺放在装填场地上,然后按照一定的顺序将每种颜色的小球均匀撒到这批瓶子里。假设彩虹瓶里要按顺序装 N 种颜色的小球(不妨将顺序就编号为 1 到 N)。现在工厂里有每种颜色的小球各一箱,工人需要一箱一箱地将小球从工厂里搬到装填场地。如果搬来的这箱小球正好是可以装填的颜色,就直接拆箱装填;如果不是,就把箱子先码放在一个临时货架上,码放的方法就是一箱一箱堆...

2020-03-11 18:32:58 488

原创 【leetcode】子集(dfs,位运算)

给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]链接:https://leetcode-cn.com/problems/subsetsdfs生成子集:class Solutio...

2020-03-10 12:15:39 214

原创 【leetcode】最多可以参加的会议数目 (小顶堆+贪心)

给你一个数组 events,其中 events[i] = [startDayi, endDayi] ,表示会议 i 开始于 startDayi ,结束于 endDayi 。你可以在满足 startDayi <= d <= endDayi 中的任意一天 d 参加会议 i 。注意,一天只能参加一个会议。请你返回你可以参加的 最大 会议数目。示例 1:输入:events = [[1,...

2020-02-16 17:05:35 734

原创 【leetcode】使数组严格递增 (dp+二分)

给你两个整数数组 arr1 和 arr2,返回使 arr1 严格递增所需要的最小「操作」数(可能为 0)。每一步「操作」中,你可以分别从 arr1 和 arr2 中各选出一个索引,分别为 i 和 j,0 <= i < arr1.length 和 0 <= j < arr2.length,然后进行赋值运算 arr1[i] = arr2[j]。如果无法让 arr1 严格递增...

2020-02-13 21:51:45 616

原创 【leetcode】最长定差子序列 (map+dp)

给你一个整数数组 arr 和一个整数 difference,请你找出 arr 中所有相邻元素之间的差等于给定 difference 的等差子序列,并返回其中最长的等差子序列的长度。示例 1:输入:arr = [1,2,3,4], difference = 1输出:4解释:最长的等差子序列是 [1,2,3,4]。示例 2:输入:arr = [1,3,5,7], difference = ...

2020-02-10 20:39:51 200

原创 【leetcode】二维区域和检索 - 矩阵不可变 (二维前缀和)

给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2)。上图子矩阵左上角 (row1, col1) = (2, 1) ,右下角(row2, col2) = (4, 3),该子矩形内元素的总和为 8。示例:给定 matrix = [[3, 0, 1, 4, 2],[5, 6, 3, 2, 1],[1, 2, 0,...

2020-02-10 20:05:58 396

原创 【leetcode】让字符串成为回文串的最少插入次数 (区间dp)

给你一个字符串 s ,每一次操作你都可以在字符串的任意位置插入任意字符。请你返回让 s 成为回文串的 最少操作次数 。「回文串」是正读和反读都相同的字符串。示例 1:输入:s = “zzazz”输出:0解释:字符串 “zzazz” 已经是回文串了,所以不需要做任何插入操作。示例 2:输入:s = “mbadm”输出:2解释:字符串可变为 “mbdadbm” 或者 “mdbabd...

2020-02-09 22:16:40 329

原创 【leetcode】二指输入的的最小距离 (dp)

二指输入法定制键盘在 XY 平面上的布局如上图所示,其中每个大写英文字母都位于某个坐标处,例如字母 A 位于坐标 (0,0),字母 B 位于坐标 (0,1),字母 P 位于坐标 (2,3) 且字母 Z 位于坐标 (4,1)。给你一个待输入字符串 word,请你计算并返回在仅使用两根手指的情况下,键入该字符串需要的最小移动总距离。坐标 (x1,y1) 和 (x2,y2) 之间的距离是 |x1 - ...

2020-02-09 21:39:06 355

原创 【leetcode】最长回文子序列 (区间dp)

给定一个字符串s,找到其中最长的回文子序列。可以假设s的最大长度为1000。示例 1:输入:“bbbab”输出:4一个可能的最长回文子序列为 “bbbb”。示例 2:输入:“cbbd”输出:2一个可能的最长回文子序列为 “bb”。链接:https://leetcode-cn.com/problems/longest-palindromic-subsequence思路分析...

2020-02-07 21:44:22 252

原创 【leetcode】可被三整除的最大和

给你一个整数数组 nums,请你找出并返回能被三整除的元素最大和。示例 1:输入:nums = [3,6,5,1,8]输出:18解释:选出数字 3, 6, 1 和 8,它们的和是 18(可被 3 整除的最大和)。示例 2:输入:nums = [4]输出:0解释:4 不能被 3 整除,所以无法选出数字,返回 0。示例 3:输入:nums = [1,2,3,4,4]输出:12解...

2020-02-03 18:07:11 1113

原创 【leetcode】最长公共子序列(dp)

给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符串没...

2020-02-03 16:50:23 203

原创 【leetcode】二叉树寻路 (细节)

在一棵无限的二叉树上,每个节点都有两个子节点,树中的节点 逐行 依次按 “之” 字形进行标记。如下图所示,在奇数行(即,第一行、第三行、第五行……)中,按从左到右的顺序进行标记;而偶数行(即,第二行、第四行、第六行……)中,按从右到左的顺序进行标记。给你树上某一个节点的标号 label,请你返回从根节点到该标号为 label 节点的路径,该路径是由途经的节点标号所组成的。示例 1:输入:...

2020-02-02 21:59:19 1326

原创 【leetcode】跳跃游戏 V

给你一个整数数组 arr 和一个整数 d 。每一步你可以从下标 i 跳到:i + x ,其中 i + x < arr.length 且 0 < x <= d 。i - x ,其中 i - x >= 0 且 0 < x <= d 。除此以外,你从下标 i 跳到下标 j 需要满足:arr[i] > arr[j] 且 arr[i] > arr[k] ...

2020-02-02 21:29:15 195

原创 【leetcode】分裂二叉树的最大乘积 (树的遍历)

给你一棵二叉树,它的根为 root 。请你删除 1 条边,使二叉树分裂成两棵子树,且它们子树和的乘积尽可能大。由于答案可能会很大,请你将结果对 10^9 + 7 取模后再返回。示例 1:输入:root = [1,2,3,4,5,6]输出:110解释:删除红色的边,得到 2 棵子树,和分别为 11 和 10 。它们的乘积是 110 (11*10)示例 2:输入:root = [1,nu...

2020-02-02 16:22:38 523

原创 【leetcode】颜色交替的最短路径(bfs,dfs)

在一个有向图中,节点分别标记为 0, 1, …, n-1。这个图中的每条边不是红色就是蓝色,且存在自环或平行边。red_edges 中的每一个 [i, j] 对表示从节点 i 到节点 j 的红色有向边。类似地,blue_edges 中的每一个 [i, j] 对表示从节点 i 到节点 j 的蓝色有向边。返回长度为 n 的数组 answer,其中 answer[X] 是从节点 0 到节点 X 的最...

2020-01-31 17:05:33 472

原创 一个人的旅行(hdu2066) (最短路模板题)

虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,0),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信,去北京探望孟姜女……眼看寒假就快到了,这么一大段时间,可不能浪费啊,一定要给自己好好的放个假,可...

2020-01-28 22:06:34 365

原创 【leetcode】分割数组的最大值(二分枚举)

给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。注意:数组长度 n 满足以下条件:1 ≤ n ≤ 10001 ≤ m ≤ min(50, n)示例:输入:nums = [7,2,5,10,8]m = 2输出:18解释:一共有四种方法将nums分割为2个子数组。其中最好的方式是将其分为[7...

2020-01-27 20:34:49 277

空空如也

空空如也

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

TA关注的人

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