
算法
文章平均质量分 80
EBABEFAC
兴趣、初心、热情,坚持;怠惰是原罪;
20230530,还是得有一个地方分享下东西,不然自己容易怠惰
展开
-
常用排序算法
基本概念介绍稳定排序对于待排序的数据,如果有元素a和b相等,如果排序前a在b的前面,在排序后a还是在b的前面,则称之为稳定排序。非稳定排序对于待排序的数据,如果有元素a和b相等,如果排序前a在b的前面,在排序后a可能出现在b的后面,则称之为非稳定排序。内排序待排文件的数据都是在内存储器中进行的。外排序如果数据很大,内存无法直接加载完成的数据,排序过程需要借助于内外存数据的交换来完...原创 2019-10-27 21:37:08 · 184 阅读 · 0 评论 -
算法-字符串最小变换次数
题目描述给定两个字符串,已知可以使用三种方式进行变换插入一个字符删除一个字符更改一个字符请设计一个算法,找到两个字符串之间的经历几次最小变换,可以字符串1转换成字符串2输入描述输入两个字符串,字符串的长度<=1000输出描述最小变换次数分析:这道题花费的很长时间,主要还是没有想到用动态规划法,我一直考虑求出最长的非连续的公共子序列问题,有点坑。也就不解释了,看看程...原创 2019-08-25 12:53:20 · 3140 阅读 · 0 评论 -
算法-字符串旋转问题
问题描述:小明同学需要对一个长度为 N 的字符串进行处理,他需要按照要求执行若干步骤,每个步骤都均为下面 2 种操作中的一种,2 种操作如下:TYPE 1. 从字符串结尾开始算起,将第 X 个字符之前的字符移动到字符串末尾TYPE 2. 输出字符串索引为 X 的字符小明尝试了很久没能完成,你可以帮他解决这个问题吗?输入描述第一行,包含两个整数,字符串的长度 N 和操作次数T;第二行为...原创 2019-08-25 22:31:24 · 162 阅读 · 0 评论 -
回文子串的个数问题(Java)
题目描述给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。("回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。)具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。输入描述输入一个字符串S 例如“aabcb”(1 <= |S| <= 50), |S|表示字符串S的长度。输出描述符合条件的字符...原创 2019-08-12 23:45:58 · 2320 阅读 · 0 评论 -
算法-目的地最短步数
题目描述:考虑你从家出发步行去往一处目的地,该目的地恰好离你整数单位步长(大于等于1)。你只能朝向该目的地或者背向该目的地行走,而你行走的必须为单位步长的整数倍,且要求你第N次行走必须走N步。请就给出目的地离你距离,判断你是否可以在有限步内到达该目的地。如果可以到达的话,请计算到达目的地的最短总步数(不能到达则输出-1)。输入描述:1个整数:目的地离你距离T输出描述:1个整数:最短总步...原创 2019-08-22 22:09:11 · 855 阅读 · 0 评论 -
算法-特征提取
题目描述小明是一名算法工程师,同时也是一名铲屎官。某天,他突发奇想,想从猫咪的视频里挖掘一些猫咪的运动信息。为了提取运动信息,他需要从视频的每一帧提取“猫咪特征”。一个猫咪特征是一个两维的vector<x, y>。如果x_1=x_2 and y_1=y_2,那么这俩是同一个特征。因此,如果喵咪特征连续一致,可以认为喵咪在运动。也就是说,如果特征<a, b>在持续帧里出现...原创 2019-08-26 23:41:10 · 274 阅读 · 0 评论 -
算法-最长公共子串
问题描述给定两个字符串,请编写代码,输出最长公共子串(Longest Common Substring),是指两个字符串中的最长的公共子串,要求子串一定是连续。输入描述文本格式,2个非空字符串(字母数字组成),2个字符串以","英文逗号分割,字符串长度均小于等于100。输出描述整形,为匹配到的最长子串长度分析:一涉及到字符串,可以有各种变种的问题,像这种最长公共子串、最长公共子序列就是...原创 2019-08-27 23:44:25 · 669 阅读 · 0 评论 -
算法-最高得分(动态规划)
题目描述小明同学在参加一场考试,考试时间2个小时。试卷上一共有n道题目,小明要在规定时间内,完成一定数量的题目。 考试中不限制试题作答顺序,对于 i 第道题目,小明有三种不同的策略可以选择: (1)直接跳过这道题目,不花费时间,本题得0分。(2)只做一部分题目,花费pi分钟的时间,本题可以得到ai分。 (3)做完整个题目,花费qi分钟的时间,本题可以得到bi分。小明想知道,他最多能得到...原创 2019-09-04 00:23:34 · 2407 阅读 · 0 评论 -
算法-最短路径(动态规划法)
问题描述猛兽侠中精灵鼠在利剑飞船的追逐下逃到一个n*n的建筑群中,精灵鼠从(0,0)的位置进入建筑群,建筑群的出口位置为(n-1,n-1),建筑群的每个位置都有阻碍,每个位置上都会相当于给了精灵鼠一个固定值减速,因为精灵鼠正在逃命所以不能回头只能向前或者向下逃跑,现在问精灵鼠最少在减速多少的情况下逃出迷宫?输入描述第一行迷宫的大小: n >=2 & n <= 10000;...原创 2019-09-10 22:28:42 · 3178 阅读 · 0 评论 -
算法-美妙的约会
问题描述:牛牛和妞妞在一天晚上决定一起去看一场情人节演唱会,可是由于这场演唱会实在太出名了,有很多情侣都来观看,牛牛和妞妞不小心被人流冲散了!维持秩序的人决定,让大家排成一列,相邻两个进去的人(2k-1和2k,k为正整数)坐在相邻座位。但是现在的队伍乱糟糟的,有很多情侣都不在相邻位置。维持秩序的人同意让情侣们跟相邻的人交换位置,直到所有情侣都在2k-1和2k位置上为止。但是维持秩序的人很没有...原创 2019-08-20 23:11:17 · 349 阅读 · 0 评论 -
算法(二):分治法
分治法的基本思想分治法的基本思想是将一个规模为n的问题分解为k个规模较小的的子问题,这些子问题相互独立且与原问题相同,递归解决这些子问题,然后将各个子问题的解合并得到原问题的解。分治法的使用条件分治法所能解决的问题一般具有以下几个特征:该问题的规模缩小到一定的程度就可以容易地解决;该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质;利用该问题分解出的子问题的解可以合并为该问题原创 2017-06-12 13:39:14 · 988 阅读 · 0 评论 -
算法(三):动态规划法
算法的基本思想动态规划法将待求解问题分解成若干个相互重叠的子问题,每个子问题对应于决策过程的一个阶段,一般来说,子问题的重叠关系表现在对给定问题求解的递推关系(也就是动态规划函数)中,将子问题的解求解一次并填入表中,当需要再次求解此子问题时,可以通过查表获得该子问题的解而不用再次求解,从而避免了大量重复计算。适用的情况能采用动态规划求解的问题的一般要具有3个性质: (1) 最优化原理:如果问题原创 2017-06-12 14:53:42 · 433 阅读 · 0 评论 -
算法(四):贪心算法
顾名思义,贪心算法总是作出在当前看来最好的选择,也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单元最短路径问题,最优生成树问题等。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。贪心算法的基本思路:建立数学模原创 2017-06-12 16:19:51 · 430 阅读 · 0 评论 -
算法(五):回溯法和分支限界法
回溯法回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。许多复杂的,规模较大的问题都可以使用回溯法,有“通用解原创 2017-06-12 19:18:50 · 3264 阅读 · 0 评论 -
算法题-跳格子有多少种走法
问题描述:假设你正在玩跳格子(所有格子排成一个纵列)游戏。需要 跳完n 个格子你才能抵达终点。每次你可以跳 1 或 2 个格子。你有多少种不同的方法可以到达终点呢?注意:给定 n 是一个正整数。算法思路:这是一道很经典的问题,题不难,但是是理解“递推”和“递归”两种思想的很好的一道算法题。递归是自上到下递归,但求解还是先求子问题递推是先求小问题,次大问题可以通过子问题获得解答解法...原创 2019-08-08 23:18:30 · 6755 阅读 · 0 评论 -
算法-在规定的步骤内有多少种方式走出边界
问题描述有一只地鼠不小心跑进了一个m*n的矩形田地里,假设地鼠在这块田地的初始位置为(x,y),并且每次只能向相邻的上下左右四个方向移动一步,那么在最多移动K次的情况下,有多少条路径可以逃出这片田地(一旦出去田地的边界就不能再往回走)?输入描述:输入数据包括五个参数:m,n,x,y,K其中m和n的范围均为是[1,10],K的范围是[0,10]。0<=x<m,0<=y&l...原创 2019-08-13 23:28:31 · 334 阅读 · 0 评论 -
算法-最少移动次数
问题描述农场有n只鸡鸭排为一个队伍,鸡用“C”表示,鸭用“D”表示。当鸡鸭挨着时会产生矛盾。需要对所排的队伍进行调整,使鸡鸭各在一边。每次调整只能让相邻的鸡和鸭交换位置,现在需要尽快完成队伍调整,你需要计算出最少需要调整多少次可以让上述情况最少。例如:CCDCC->CCCDC->CCCCD这样就能使之前的两处鸡鸭相邻变为一处鸡鸭相邻,需要调整队形两次。输入描述输入一个长度为N,且...原创 2019-08-19 22:53:55 · 2790 阅读 · 1 评论 -
算法-最小排序代价(很简单的数学思想)
题目描述你有3个需要完成的任务,完成这3个任务是需要付出代价的。首先,你可以不花任何代价的完成一个任务;然后,在完成了第i个任务之后,你可以花费|Ai - Aj|的代价完成第j个任务。|x|代表x的绝对值。计算出完成所有任务的最小代价。输入描述一行3个整数A1,A2,A3,每个数字之间用一个空格分隔。所有数字都是整数,并且在[1,100]范围内。输出描述一个整数,代表最小的代价。注...原创 2019-08-14 23:51:48 · 1413 阅读 · 0 评论 -
算法(-):递归
先问个问题:递归思想难吗?有的人说,递归不就是自己调用自身嘛,有什么难的;有的人说,我擅长递归,写代码会显得短小精悍。然而总有那么一些人说递归好难,太难理解了。平常我也刷一些算法,有的题大概明白可以用递归,结果揉了半天才写出来。感觉递归下去把我弄懵逼了。递归难在哪里?递归的思想和我们的正常思维是相反的。我们通常是从上往下的思维,而递归是从下往上的思维。有啥解决办法呢,两个字:练题。原创 2017-06-12 09:54:37 · 487 阅读 · 0 评论