![](https://img-blog.csdnimg.cn/8dd52d2895ba4f3ca290196b0ec0188c.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
随笔
文章平均质量分 52
该栏主要是展示博主日常关于零碎知识的见解以及剑指Offer的题目思路解法等,仅供参考。
ufgnix0802
这个作者很懒,什么都没留下…
展开
-
数据流图实例应用
数据流图:简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表达软件模型的一种图示方法。()数据流图或数据流程图(Data Flow Diagram),缩写。数据流图DFD是描述系统中数据流程的一种图形工具,它标志了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换为逻辑输出所需的加工处理。。输入:旅客信息 (姓名、年龄、单位、身份证号码、旅行时间、目的地等)输出:取票通知单(附有应交的账款)原创 2023-01-04 19:01:27 · 1165 阅读 · 0 评论 -
SMART原则和Session原理
在我们日常工作中,我们需要对我们实现的目标制定一系列的规则,而管理大师彼得·德鲁克的《管理的实践》就提出了SMART原则用于目标设定,包括以下五个原则...原创 2022-10-22 21:19:11 · 226 阅读 · 0 评论 -
使用实例解释UML类图
在我们的平常工作中,完成某个项目或者功能不可能直接打开项目讲解思路,更多的是使用某种图表来表达我们的思想,其中UML类图就是一种非常便利的手段。原创 2022-10-19 22:29:47 · 2105 阅读 · 0 评论 -
C++ 2022常见知识点3
服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密,所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(StartSSL就是一个不错的选择,有1年的免费服务)。原创 2022-09-30 13:15:28 · 2173 阅读 · 0 评论 -
2022常见知识点2
这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。在这个文件夹里每一个文件都是一个由“名/值”对组成的文本文件,另外还有一个文件保存有所有对应的 Web 站点的信息。由于“Cookie”具有可以保存在客户机上的神奇特性, 因此它可以帮助我们实现记录用户个人信息的功能, 而这一切都不必使用复杂的。Cookie 并不是它的原意“甜饼”的意思, 而是一个保存在客户机中的简单的文本文件, 这个文件与特定的。计算机暂时或永久保存的信息。原创 2022-09-22 20:57:32 · 959 阅读 · 0 评论 -
打印从1到最大的n位数(C++)
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。原创 2022-06-29 22:11:01 · 393 阅读 · 0 评论 -
剪绳子(进阶版)(C++)
给你一根长度为 n 的绳子,请把绳子剪成整数长的 m 段( m 、 n 都是整数, n > 1 并且 m > 1 , m原创 2022-06-28 22:06:53 · 208 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面(二)(C++)
输入一个长度为 n 整数数组,数组里面可能含有相同的元素,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,对奇数和奇数,偶数和偶数之间的相对位置不做要求,但是时间复杂度和空间复杂度必须如下要求。数据范围:0≤n≤50000,数组中每个数的值0≤val≤10000要求:时间复杂度 O(n),空间复杂度 O(1)...原创 2022-06-27 22:17:38 · 214 阅读 · 0 评论 -
剪绳子(C++)
给你一根长度为 n 的绳子,请把绳子剪成整数长的 m 段( m 、 n 都是整数, n > 1 并且 m > 1 , m原创 2022-06-26 22:20:10 · 574 阅读 · 0 评论 -
字符流中第一个不重复的字符(C++)
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符 “go” 时,第一个只出现一次的字符是 “g” 。当从该字符流中读出前六个字符 “google" 时,第一个只出现一次的字符是"l"。数据范围:字符串长度满足1≤n≤1000 ,字符串中出现的字符一定在 ASCII 码内。进阶:空间复杂度 O(n) ,时间复杂度 O(n)后台会用以下方式调用 Insert 和 FirstAppearingOnce 函数如果当前字符流没有存在出现一次的字符,返回#字符。...原创 2022-06-25 22:21:15 · 169 阅读 · 0 评论 -
孩子们的游戏(圆圈中最后剩下的数)(C++)
每年六一儿童节,牛客都会准备一些小礼物和小游戏去看望孤儿院的孩子们。其中,有个游戏是这样的:首先,让 n 个小朋友们围成一个大圈,小朋友们的编号是0~n-1。然后,随机指定一个数 m ,让编号为0的小朋友开始报数。每次喊到 m-1 的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0… m-1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿到牛客礼品,请你试着想下,哪个小朋友会得到这份礼品呢?数据范围:1≤n≤5000,1≤m≤1000原创 2022-06-23 21:56:44 · 234 阅读 · 0 评论 -
左旋转字符串(C++)
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列 S ,请你把其循环左移 K 位后的序列输出。例如,字符序列 S = ”abcXYZdef” , 要求输出循环左移 3 位后的结果,即 “XYZdefabc”数据范围:输入的字符串长度满足0≤len≤100,0≤n≤100进阶:空间复杂度 O(n) ,时间复杂度 O(n)...原创 2022-06-21 22:16:34 · 245 阅读 · 0 评论 -
和为S的两个数字(C++)
输入一个升序数组 array 和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,返回任意一组即可,如果无法找出这样的数字,返回一个空数组即可。数据范围: 0≤len(array)≤105,1≤array[i]≤106...原创 2022-06-19 21:57:51 · 171 阅读 · 0 评论 -
和为S的连续正数序列(C++)
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列?数据范围:0...原创 2022-06-18 21:40:32 · 111 阅读 · 0 评论 -
丑数(C++)
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第 n个丑数。数据范围:0≤n≤2000要求:空间复杂度 O(n), 时间复杂度 O(n)...原创 2022-06-17 22:17:20 · 2263 阅读 · 0 评论 -
把数组排成最小的数(C++)
输入一个非负整数数组numbers,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 例如输入数组[3,32,321],则打印出这三个数字能排成的最小数字为321323。数据范围:0...原创 2022-06-16 22:20:12 · 402 阅读 · 0 评论 -
整数中1出现的次数(从1到n整数中1出现的次数)(C++)
输入一个整数 n ,求 1~n 这 n 个整数的十进制表示中 1 出现的次数 例如, 1~13 中包含 1 的数字有 1 、 10 、 11 、 12 、 13 因此共出现 6 次注意:11 这种情况算两次数据范围:1≤n≤30000进阶:空间复杂度 O(1),时间复杂度 O(lognn)示例2思路/解法方式一方式二......原创 2022-06-15 21:53:03 · 1965 阅读 · 1 评论 -
数组中出现次数超过一半的数字(C++)
给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。数据范围:n≤50000,数组中元素的值0≤val≤10000要求:空间复杂度:O(1),时间复杂度 O(n)保证数组输入非空,且保证有解......原创 2022-06-15 21:50:48 · 420 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面(一)(C++)
输入一个长度为 n 整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。数据范围:0≤n≤5000,数组中每个数的值0≤val≤10000要求:时间复杂度 O(n),空间复杂度 O(n)进阶:时间复杂度 O(n2),空间复杂度 O(1)......原创 2022-06-14 21:59:20 · 319 阅读 · 0 评论 -
替换空格(C++)
请实现一个函数,将一个字符串s中的每个空格替换成“%20”。例如,当字符串为We Are Happy。则经过替换之后的字符串为We%20Are%20Happy。数据范围:0≤len(s)≤1000 。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。......原创 2022-06-13 21:58:43 · 610 阅读 · 0 评论 -
第一个只出现一次的字符(C++)
在一个长为n字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)。(从0开始计数)数据范围:0≤n≤10000,且字符串只有字母组成。要求:空间复杂度 O(n),时间复杂度 O(n)......原创 2022-06-13 21:56:53 · 481 阅读 · 0 评论 -
构建乘积数组(C++)
给定一个数组 A[0,1,…,n-1] ,请构建一个数组 B[0,1,…,n-1] ,其中 B 的元素 B[i]=A[0]*A[1]*…*A[i-1]*A[i+1]*…*A[n-1](除 A[i] 以外的全部元素的的乘积)。程序中不能使用除法。(注意:规定 B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2])对于 A 长度为 1 的情况,B 无意义,故而无法构建,用例中不包括这种情况。数据范围:1≤n≤10 ,数组中元素满足原创 2022-06-08 21:45:00 · 601 阅读 · 0 评论 -
把字符串转换成整数(atoi)(C++)
写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。传入的字符串可能有以下部分组成:转换算法如下:1.去掉无用的前导空格2.第一个非空字符为+或者-号时,作为该整数的正负号,如果没有符号,默认为正数3.判断整数的有效部分: 3.1 确定符号位之后,与之后面尽可能多的连续数字组合起来成为有效整数数字,如果没有有效的整数部分,那么直接返回0 3.2 将字符串前面的整数部分取出,后面可能会存在存在多余的字符(字母,符号,空格等),这些字符可以被原创 2022-06-08 21:44:15 · 274 阅读 · 0 评论 -
扑克牌顺子(C++)
现在有2副扑克牌,从扑克牌中随机五张扑克牌,我们需要来判断一下是不是顺子。有如下规则:要求:空间复杂度 O(1),时间复杂度 O(nlogn),本题也有时间复杂度 O(n) 的解法输入五张扑克牌的值五张扑克牌能否组成顺子。......原创 2022-06-06 21:11:30 · 1652 阅读 · 1 评论 -
顺时针打印矩阵(C++)
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 则依次打印出数字数据范围:0原创 2022-06-05 21:44:10 · 856 阅读 · 0 评论 -
求1+2+3+...+n(C++)
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。数据范围: 0原创 2022-06-03 21:27:54 · 1095 阅读 · 0 评论 -
数组中只出现一次的两个数字(C++)
一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。数据范围:数组长度2≤n≤1000,数组中每个数的大小 0原创 2022-06-02 21:45:51 · 218 阅读 · 0 评论 -
数值的整数次方(C++)
实现函数 double Power(double base, int exponent),求base的exponent次方。注意:数据范围:∣base∣≤100 ,∣exponent∣≤100 ,保证最终结果一定满足∣val∣≤104进阶:空间复杂度 O(1),时间复杂度 O(n)原创 2022-06-01 22:04:35 · 467 阅读 · 0 评论 -
二进制中1的个数(C++)
输入一个整数 n ,输出该数32位二进制表示中1的个数。其中负数用补码表示。数据范围:- 231原创 2022-05-31 21:07:33 · 796 阅读 · 0 评论 -
不用加减乘除做加法(C++)
不用加减乘除做加法描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。数据范围:两个数都满足−10≤n≤1000进阶:空间复杂度 O(1),时间复杂度 O(1)示例1输入:1,2返回值:3示例2输入:0,0返回值:0思路/解法方式一可参考学习链接:https://blog.csdn.net/qq135595696/article/details/124460541我们可以将其想象为两个数的二进制相加,那么关键就在于如果两个数相同的位原创 2022-05-26 20:41:00 · 206 阅读 · 0 评论 -
数据流中的中位数(C++)
数据流中的中位数描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。数据范围:数据流中数个数满足1≤n≤1000,大小满足1≤val≤1000进阶: 空间复杂度 O(n) , 时间复杂度 O(nlogn)示例1输入:[5,2,3,4,1,6,7,0,8]返回原创 2022-05-26 20:35:43 · 321 阅读 · 0 评论 -
最小的K个数(C++)
最小的K个数描述 给定一个长度为 n 的可能有重复值的数组,找出其中不去重的最小的 k 个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4(任意顺序皆可)。数据范围:0≤k,n≤10000,数组中每个数的大小0≤val≤1000要求:空间复杂度 O(n) ,时间复杂度 O(nlogn)示例1输入:[4,5,1,6,2,7,3,8],4 返回值:[1,2,3,4]说明:返回最小的4个数即可,返回[1,3,2,4]也可以示例2输入:[1原创 2022-05-25 21:58:05 · 330 阅读 · 0 评论 -
数组中的逆序对(C++)
数组中的逆序对描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P mod 1000000007。数据范围: 对于 50% 的数据,size≤104对于100% 的数据,size≤105数组中所有数字的值满足 0≤val≤1000000要求:空间复杂度 O(n),时间复杂度 O(nlogn)输入描述题目保证输入的数组中没有的相同的数字示例1输入:[1,原创 2022-05-24 21:38:41 · 1037 阅读 · 0 评论 -
数组中重复的数字(C++)
数组中重复的数字描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1。数据范围:0≤n≤10000进阶:时间复杂度O(n) ,空间复杂度O(n)示例1输入:[2,3,1,0,2,5,3]返回值:2说明:2或3都是对的思路/解法方式一哈希思想原创 2022-05-24 21:37:27 · 462 阅读 · 0 评论 -
机器人的运动范围(C++)
机器人的运动范围描述 地上有一个 rows 行和 cols 列的方格。坐标从 [0,0] 到 [rows-1,cols-1] 。一个机器人从坐标 [0,0] 的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于 threshold 的格子。 例如,当 threshold 为 18 时,机器人能够进入方格 [35,37] ,因为 3+5+3+7 = 18。但是,它不能进入方格 [35,38] ,因为 3+5+3+8 = 19 。请问该机器人能够达到多少个原创 2022-05-24 21:36:31 · 274 阅读 · 0 评论 -
矩阵中的路径(C++)
矩阵中的路径描述 请设计一个函数,用来判断在一个n乘m的矩阵中是否存在一条包含某长度为len的字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。数据范围:0≤n,m≤20 ,1≤len≤25示例1输入:原创 2022-05-20 21:11:58 · 429 阅读 · 0 评论 -
把数字翻译成字符串(C++)
把数字翻译成字符串描述 有一种将字母编码成数字的方式:‘a’->1, ‘b->2’, … , ‘z->26’。 我们把一个字符串编码成一串数字,再考虑逆向编译成字符串。 由于没有分隔符,数字编码成字母可能有多种编译结果,例如 11 既可以看做是两个 ‘a’ 也可以看做是一个 ‘k’ 。但 10 只可能是 ‘j’ ,因为 0 不能编译成任何结果。 现在给一串数字,返回有多少种可能的译码结果。数据范围:字符串长度满足 0<n≤90进阶:空间复杂度 O(n),时间复杂原创 2022-05-20 10:21:26 · 444 阅读 · 0 评论 -
最长不含重复字符的子字符串(C++)
最长不含重复字符的子字符串描述 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。数据范围:s.length≤40000示例1输入:"abcabcbb"返回值:3说明:因为无重复字符的最长子串是"abc",所以其长度为 3。示例2输入:"bbbbb"返回值:1说明:因为无重复字符的最长子串是"b",所以其长度为 1。示例3输入:"pwwkew"返回值:3说明:因为无重复字符的最长子串是 "wke",所以其长度为 3。请注意,原创 2022-05-18 23:30:30 · 434 阅读 · 0 评论 -
礼物的最大价值(C++)
礼物的最大价值描述 在一个m×n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?如输入这样的一个二维数组,[[1,3,1],[1,5,1],[4,2,1]]那么路径 1→3→5→2→1 可以拿到最多价值的礼物,价值为12示例1输入:[[1,3,1],[1,5,1],[4,2,1]]返回值:12备注原创 2022-05-17 23:36:07 · 763 阅读 · 1 评论 -
买卖股票的最好时间(一)(C++)
买卖股票的最好时间(一)描述 假设你有一个数组prices,长度为n,其中prices[i]是股票在第i天的价格,请根据这个价格数组,返回买卖股票能获得的最大收益。你可以买入一次股票和卖出一次股票,并非每天都可以买入或卖出一次,总共只能买入和卖出一次,且买入必须在卖出的前面的某一天。如果不能获取到任何利润,请返回0。假设买入卖出均无手续费。数据范围:0≤n≤105,0≤val≤104要求:空间复杂度 O(1),时间复杂度 O(n)示例1输入:[8,9,2,5,4,7,1]返回值:原创 2022-05-16 23:04:23 · 176 阅读 · 0 评论