![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
算法专栏
狗头实习生
通俗易懂的语言讲解后端技术栈以及算法,精通拿来主义。(励志变成生产队的驴)
展开
-
利用二分寻找峰值
找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回。或者返回索引5,其峰值元素为6。3是峰值元素,你的函数应该返回其索引2。你的函数可以返回索引1,其峰值元素为2;峰值元素是指其值严格大于左右相邻值的元素。思路使用二分法不断向山峰靠拢。你必须实现时间复杂度为。的算法来解决此问题。...原创 2022-07-17 21:02:21 · 774 阅读 · 0 评论 -
高频面试题——和为 k 的子数组
当我们去想要判断第j个数是否有成立的条件时,我们只需要去判断第j个数减去0到i个数的和(0原创 2022-07-15 08:58:44 · 367 阅读 · 0 评论 -
蓝桥杯基础题 字符串处理(持续更新中)
目录标题统计罗马数字删除字符扫雷游戏潜伏者ISBN 号码字符串的展开FBI树单词接龙立体图计算器的改良串的处理谁拿了最多奖学金子串表达式求值单词分析统计单词数乒乓球回文数标题统计https://www.lanqiao.cn/problems/325/learning/题目描述凯凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符?注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。统计标题字符数原创 2022-03-31 23:01:13 · 5633 阅读 · 0 评论 -
反转链表JAVA——力扣
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 5000]-5000 <= Node.val <= 5000思路很简单,创建一个p1指向head,p2指向head的next先让p1的next等于null...原创 2022-03-03 15:50:40 · 441 阅读 · 2 评论 -
三行代码解决——最大子段和——DP
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1] 的和最大,为6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [5,4,-1,7,8]输出:23提示:1 <= nums.length <= ...原创 2022-03-01 10:45:21 · 81 阅读 · 0 评论 -
特殊回文数C++语言+代码+注释+优化
资源限制时间限制:1.0s 内存限制:512.0MB问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的。 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。输入格式 输入一行,包含一个正整数n。输出格式 按从小到大的顺序输出满足条件的整数,每个整数占一行。样例输入52样例输出899998989989998899数据规模和约定1<=n<=54。代码#include<原创 2022-02-09 14:01:12 · 291 阅读 · 0 评论 -
快速排序C语言代码+辅助图+注释
思路:利用分治法的思想,将一个大问题分解成两个相同结构的子问题,然后分为治之。 先确定一个key值作为基准,然后进行比较,比key值小的放在key的左面,比key大的放在key的右边。以第一次为例,辅助图如下,在32位置确定之后数组变成了arry={23,18,7},32,{74,55,45},这样我们就将比32小的书放置在32的左面,比32大的数放置在32的右面,然后再将{23,18,7},{74,55,45}以上述方法分别进行排序,直到begin==heigh...原创 2022-02-08 22:30:38 · 765 阅读 · 0 评论 -
Hello, world?Hello, world
题目描述This is the first problem for test. Since all we know the ASCII code, your job is simple: Input numbers and output corresponding messages.输入The input will contain a list of positive integers separated by whitespaces(spaces, newlines, TABs). Pleas原创 2022-01-01 19:21:36 · 3665 阅读 · 0 评论 -
母牛的故事-蓝桥杯
题目描述有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?输入输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。n=0表示输入数据的结束,不做处理。输出对于每个测试实例,输出在第n年的时候母牛的数量。每个输出占一行。样例输入复制2450样例输出复制246大概思路根据题目所述,刚出生的小牛在第四...原创 2022-01-01 19:00:39 · 122 阅读 · 0 评论 -
8.算法入门从零开始——找硬币——贪心
问题:假设有四种硬币,面值分别为二角五分、一角、五分和一分。现在要找给顾客六角三分钱,要求找给顾客硬币数量最少。思路: 贪心算法是只看眼前最优解而不管全局最优解,所以在选择硬币时,我们首先会选择面额较大的硬币既然要求硬币数量最少,那么就先从硬币面值大的开始找起。即两个二角五分,一个一角、三个一分。 注:贪心算法只是给出一个近似最优解,并不一定每次都会给出最优解。代码:#include<bits/stdc++.h>using ...原创 2021-10-20 21:21:16 · 1544 阅读 · 0 评论 -
7.算法入门从零开始——0-1背包问题(DP)——国王和金矿问题
问题:国王和金矿问题描述:有一个国家发现了max_n座金矿,参与挖矿工人的总数是max_people人。每座金矿的黄金储量不同为一维数组gold[],需要参与挖掘的工人数也不同为一维数组peopleNeed[]。每座金矿要么全挖,要么不挖,不能派出一半人挖取一半金矿。要想得到尽可能多的黄金,应该选择挖取哪几座金矿?功能:(1) 要求max_n、max_people、gold和ppeopleNeed均为可输入的;(2) 编写DP函数,求解答案F;(3) 编写main主函数,完成输入,调原创 2021-10-06 15:13:47 · 509 阅读 · 0 评论 -
6.算法入门从零开始——矩阵连乘(DP)——从入门到入土
问题:输入:<A1, A2, ..., An>, Ai是pi -1×pi矩阵 输出:计算A1×A2×...×An的最小代价方法若A是p×q矩阵,B是q×r矩阵,则A×B的代价是O(pqr)思路: 我们不妨来设一个Ak,这个位置便是矩阵从i到j最优子问题的位置,然后依次划分成寻找i到k和k+1到j的最优解。最后划分成最小为i到i,也就是它自己,此时不需要相乘,所以次数为0。 所以有两种情况,一...原创 2021-10-05 19:52:59 · 306 阅读 · 0 评论 -
5.算法入门从零开始——最长公共子序列(DP)
问题:输入:X = (x1,x2,...,xm),Y = (y1,y2,...yn)输出:X与Y的最长公共子序列Z=(z1, z2, ..., zk)思想:我们列一个二维数组假设,字符串X(x1,x2,...,xm),Y(y1,y2,...yn)的最长公共子序列为Z(z1, z2, ..., zk),如果xm=yn,那么zk=xm=yn,所以xm、yn就可以被标记成↖,表示这个值可能被作为公共子序列。如果xm!=yn,那么zk可能会等于xm,可能会等于yn...原创 2021-10-03 23:46:11 · 148 阅读 · 0 评论 -
4.算法入门从零开始——数塔(DP)
问题: 有一个数塔,结点中数字为其权值,按自顶向下(或自底向上)方式行走,经过的每一个结点,可以选择向左或向右走,到达底(或顶部),求一条自顶向下(或自底向上)的路径,所经过结点权值和最大。思路: 我们开辟两个数组,一个来存放数值,另一个来存放路径。我们在数值表中更新权值,在路径表中路记录位置。我们先看3这个结点,它有两条路,一条是18另一条是7,因为18的值大于7所以将18的权值加到3上,此时3就变为21。同时我们将该节点的路...原创 2021-10-03 15:56:18 · 961 阅读 · 0 评论 -
3.算法入门从零开始——最短路径
动态规划求解:选出从s到t的最短路径。思路: 我们对整条路进行分段分析,想求出整条路的最短路径,那么我们就要得到每一段路的最短路径。 先看C1这个结点,C1到T有两条路,一条权值是2,一条权值是5,那么我们就选最小值2,将其记录到C1中。依次类推,C2选择权值为3的路,C3选择权值为7的路,C4选择权值为1的路。所以最后得到了S3->A3->B4->C4->T4和S5->A4->B4->C4->T4两条路。...原创 2021-10-03 10:37:59 · 275 阅读 · 0 评论 -
1.算法入门从零开始——旋转词
1原创 2021-10-01 12:15:57 · 220 阅读 · 0 评论 -
2.算法入门从零开始——KMP算法
题目:设有文本串S和模式串P,现在要P是否为S的一个子串,若是,则返回P在S中开始的位置,若不是,返回-1。思路:我们最先想到的应该就是暴力算法,子串与主串挨个比较,如果不相等则退回,但是这种算法的时间复杂度太高。如果主串有n个字符,子串有m个字符,那么这种算法的时间复杂度达到了O(n*m)。因此我们今天介绍一种时间复杂度更低的KMP(看毛片)算法。 首先我们来看什么是kmp算法,KMP算法就是对子串的前缀和后缀进行匹配,得出一个next数组,通...原创 2021-10-01 12:04:10 · 306 阅读 · 0 评论