算法及其应用
菜鸟哆哆
USTC小硕,欢迎你的关注。
展开
-
买卖股票的最佳时机
一、题目描述 1)给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。 2)原题目出处:https://leetcode-cn.com/explore/interview/card/bytedance/246/dynamic-pr...原创 2018-12-17 17:30:26 · 243 阅读 · 0 评论 -
矩阵相乘
一、问题描述 假设存在一个m行n列的矩阵与一个n行k列的矩阵相乘,请写出算法关键步骤。二、解题思路 1.获取待相乘的矩阵的行和列,构造相乘后的矩阵 2.矩阵相乘三、注意事项 1.矩阵相乘是三层循环 2.二维数组然后获取行列四、代码实现 见我的github:...原创 2018-07-19 15:04:24 · 477 阅读 · 0 评论 -
查找栈中最小值
一、问题描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。二、解题思路 三、注意事项 四、代码实现 见我的github:查找栈中最小值...原创 2018-07-20 13:45:34 · 1056 阅读 · 0 评论 -
找出超过半数的那个数字
一、问题描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。二、解题思路 1) 思路一(最简洁): 根据鸽笼原理,最差情况下,也会出现三个“该数字”连续排...原创 2018-07-26 17:35:07 · 548 阅读 · 0 评论 -
构造回文
一、题目描述 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。二、解题思路 1. 利用最长公共字符串匹配的思路来解题。 2. 得到字符串及自身反转字符串。 3. 构造二维数组,进行匹配。 三、注意事项 数组从1开始循...原创 2018-08-17 00:28:55 · 653 阅读 · 0 评论 -
统计字符串中首先出现三次的英文字符
一、问题描述 给定一个英文字符串,请写一段代码找出这个字符串中首先出现三次的那个英文字符(需要区分大小写)。二、解题思路 1)方法一(map方法):判断字符是否在map中,在的话加一并且判断是否等于三,等于直接输出,map中没有,则置一。 2)方法二(桶排序):设置26*2个桶,对应位加一。 方法一实现:map方法 ...原创 2018-08-22 17:19:42 · 1190 阅读 · 0 评论 -
网易笔试题——合唱团
一、题目描述 有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最大的乘积吗?二、解题思路 方案一(回溯法):从n个学生中选取k名学生,可以理解为在n个数据中,进行深度为k的递归,保持两组数据,一组表示当前的数据,一组表示最优的数...原创 2018-05-31 23:51:37 · 782 阅读 · 0 评论 -
华为笔试题——不重复随机数
一、题目概述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。 二、解题思路 方法一: 如果不需要知道...原创 2018-06-01 00:07:35 · 254 阅读 · 0 评论 -
贪吃蛇
一、问题描述 初始状态:贪吃蛇的蛇头在坐标(0,0)处,蛇身长度为10,蛇尾在(-10,0)处,呈一字型,输入一行字符,L表示蛇向左行走一格,R表示蛇向右行走一格,U表示蛇向上行走一格,D表示蛇向下行走一格,判断输入的操作方式会不会导致蛇在自身上发生碰撞,会发生输出legal,不会发生输出illegal。二、解题思路 1) 获取身体坐标。 ...原创 2018-07-29 11:51:24 · 843 阅读 · 0 评论 -
送货最短路径
一、问题描述 如图,某物流派送员p,需要给a、b、c、d4个快递点派送包裹,请问派送员需要选择什么的路线,才能完成最短路程的派送。假设如图派送员的起点坐标(0,0),派送路线只能沿着图中的方格边行驶,每个小格都是正方形,且边长为1,如p到d的距离就是4。随机输入n个派送点坐标,求输出最短派送路线值(从起点开始完成n个点派送并回到起始点的距离)。1)输入: 1)输...原创 2018-08-02 16:32:57 · 5878 阅读 · 0 评论 -
二叉树实现
本文内容:二叉树的数据结构、 二叉树的三种遍历赋值(先序、中序、后序)、 二叉树非递归先序遍历、 二叉树的层次遍历、 二叉树的按行打印。一、二叉树的数据结构 二叉树包括三个元素和一个构造函数。 ...原创 2018-07-25 17:12:04 · 1278 阅读 · 0 评论 -
二叉树中和为某一值的路径
一、题目描述 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)二、解题思路 1)首先是采用先序遍历二叉树的思想。 2)先对根节点进行非空判断(非空结点先加进来,如果不合适,后续删除)。 ...原创 2018-07-25 22:32:08 · 122 阅读 · 0 评论 -
无重复字符的最长子串
一、题目描述 1)无重复字符的最长子串 2)原题目出处:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/description/二、解题思路 方案一):利用滑动窗口来统计无重复字符的最长子串。 ...原创 2018-12-17 15:59:06 · 359 阅读 · 0 评论 -
判断点是否在区域内
一、题目描述 1)给定一个点的坐标(x,y)和一片区域(若干点组成),判断该点是否在区域内。 2)原题目出处:阿里面试二、解题思路 方案一):光线投射算法。 方案二):夹角法。 方案三):三、注意事项 1)光线投射算法:1.1)射线与多边形的顶点相交,这是交点只能计算一个。 ...原创 2018-12-15 11:55:26 · 11532 阅读 · 0 评论 -
华为笔试题——统计最后一个单词长度
一、题目描述 计算字符串最后一个单词的长度,单词以空格隔开。二、解题思路 统计字符串长度,计算最后一个空格出现的位置,相减可得。 三、注意事项 1.注意拿到字符串需要去除前后的空格。 2.index是从0开始的,所以需要额外减一。四、代码实现 见我的github:统计最后一个单词长度...原创 2018-06-02 21:29:11 · 322 阅读 · 0 评论 -
华为笔试题——查找单词个数
一、题目描述 写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。二、解题思路 对于输入的字符串,根据空格分开,统计出单词个数。 三、注意事项 1.为了方便,统一将输入的字符串转化为大写或者小写。 2.根据 split 函数,将字符串分割。...原创 2018-06-02 21:12:33 · 590 阅读 · 0 评论 -
腾讯笔试题——Alpha_transto_num
一、题目描述 假定一种编码的编码范围是a ~ y的25个字母,从1位到4位的编码,如果我们把该编码按字典序排序,形成一个数组如下: a, aa, aaa, aaaa, aaab, aaac, … …, b, ba, baa, baaa, baab, baac … …, yyyw, yyyx, yyyy 其中a的Index为0,aa的Index为1,aaa的Index为2,以此类推。...原创 2018-06-02 21:31:19 · 478 阅读 · 0 评论 -
阿里笔试题——统计字符串中最多数之和
一、题目描述 写段代码,定义一个字符串常量,字符串中只有大小写字母和整数,输出字符串中的出现最多的数字的和?例如 ” 9fil3dj11P0jAsf11j ” 中出现最多的是11两次,输出22二、解题思路 1.使用正则表达式来划分数字和字符; 2.使用map来存放最大值和最大数。三、注意事项 1.三种正则表达式的写法; ...原创 2018-06-03 12:24:41 · 434 阅读 · 0 评论 -
子树判断
一、问题描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)。二、解题思路 1) 如果当前结点相同,则通过compare函数进行对比子树是否一样。 2) compare函数对两个树进行相似判断。 首先得有一个位 然后对子树进行判断,如果两者都是空,那就直接返回假...原创 2018-07-20 13:45:11 · 606 阅读 · 1 评论 -
顺时针打印矩阵
一、题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,1...原创 2018-07-19 20:51:31 · 166 阅读 · 0 评论 -
镜像二叉树
一、问题描述 操作给定的二叉树,将其变换为源二叉树的镜像。 二、解题思路 1. 二叉树判空。 2. 交换左右孩子 3. 递归左右孩子。 三、注意事项 1. 二叉树需要判空。四、代码实现 见我的github:镜像二叉树...原创 2018-07-20 13:45:22 · 201 阅读 · 0 评论 -
Digital_trans
一、题目描述 1)中文大写金额数字前应标明“人民币”字样。中文大写金额数字应用壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整等字样填写。 2)中文大写金额数字到“元”为止的,在“元”之后,应写“整字,如¥ 532.00应写成“人民币伍佰叁拾贰元整”。在”角“和”分“后面不写”整字。 3)阿拉伯数字中间有“0”时,中文大写要...原创 2018-07-29 10:55:06 · 374 阅读 · 0 评论 -
大小写互换
一、问题描述 将输入字符串的大小写互换,输出时小写字母按序排在前,大写在后。二、解题思路 1.利用正则表达式将小写字母拨除,并转换成大写字母。 2.利用正则表达式将大写字母拨除,并转换成小写字母。 三、注意事项 1.使用 StringBuffer 完成字符串连接。四、代码实现 ...原创 2018-08-22 22:58:53 · 460 阅读 · 0 评论 -
返回数组中最小的k个数
一、题目描述 返回数组中最小的k个数。二、解题思路 方法一:堆; 方法二:快排 方法一,堆实现: 1) 整堆 2) 交换堆顶和数组末尾元素,循环整堆,注意边界值 3)数组倒叙 方法二,快排实...原创 2018-08-25 17:32:34 · 1379 阅读 · 0 评论 -
数据挖掘001
由于数据科学刚刚兴起,数据科学家作为一种新生职业被提出,数据研究高级科学家Rachel Schutt将其定义为”计算机科学家、软件工程师和统计学家的混合体“。数据挖掘作为一个学术领域,横跨多个学科,涵盖了统计学、数学、机器学习和数据库等,此外还包括各类专业方向比如从油田电力、海洋生物、历史文本、电子通讯、法律税务等的各个专业领域。注意每一分类都需要相当的行业经验。而要明白某一事物的本质,就需要通...原创 2016-04-01 11:30:20 · 380 阅读 · 0 评论 -
将string类型的IP地址转化成int
一、题目描述 将string类型的IP地址转化成int。 将int类型数转化成string类型的IP地址。二、解题思路 1)正则表达式对输入的string类型的IP地址进行判断。 2)将IP转化为int。 2.1)首先通过String.split("\\."),将字符串按照"."分开。 ...原创 2018-08-28 15:37:08 · 9504 阅读 · 1 评论 -
赫夫曼树及编码问题(Huffman)
一、题目描述 将数组转化为赫夫曼树。二、解题思路 赫夫曼树本质上是二叉树,赫夫曼树的每一个结点结构如下图: 构建Huffman数组并初始化 寻找最小值和次小值,并构建关系 构建关系 三、注意事项 1)为什么只循环array.length -...原创 2018-08-28 12:36:05 · 1120 阅读 · 0 评论 -
求数组中两两之差绝对值最小的值
一、问题描述 有一个整数数组,请求出两两之差绝对值最小的值,记住,只要得出最小值即可,不需要求出是哪两个数。(下述的所有解法中,依旧没有实现在O(n)时间内求解的,如果有好方法,求赐教!!!)二、解题思路 方法一:暴力做差,求最小值。时间复杂度O(n^2)。 方法二:排序做差,求相邻最小值。时间复杂度O(nlgn)。 方法三:设这...原创 2018-08-23 23:17:42 · 21020 阅读 · 1 评论 -
链表相关(Java实现)
一、问题描述1. 单链表的构造1.1 头插法1.2 尾插法2. 单链表逆置(输入一个链表,从尾到头打印链表每个节点的值)2.1 数组存放,倒序输出2.2 利用栈倒叙输出,不改变链表本身(利用递归输出)...原创 2018-08-18 01:03:32 · 5546 阅读 · 0 评论 -
数组中左小右大的数
一、问题描述 一个int 数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现。二、解题思路 构建一个数组min_right[],满足min_right[i]是当前位i至最后数组中最小的那个数。 定义一个当前最大值用于比较,定义list用来存数据。 ...原创 2018-08-23 16:07:47 · 829 阅读 · 0 评论 -
字符串按照排列组合打印
一、问题描述 将输入字符串按照全排列的方式打印输出。二、解题思路 考虑使用回溯法。 确定参数值:字符数组和递归深度。 边界值判断:递归深度到达边界,并且记得return。 i之前的元素已经有序,通过for循环只对后续元素进行全排列。 三、注意事项 ...原创 2018-08-23 10:38:49 · 799 阅读 · 0 评论 -
创造回文
一、题目描述 给定一个字符串,问是否能通过添加一个字母将其变为回文串。二、解题思路 方法一: 设置两个指针,头指针指向字符串首部,尾指针指向字符串尾部。若头尾指针相等,头指针加加,尾指针减减,向中间靠拢,若不相等,则进一步判断(头指针++,尾指针)和(头指针,尾指针--)中是否存在回文,运用递归完成。 方法二:既然可以通过添加构造回文,那么也可以...原创 2018-08-19 01:27:16 · 252 阅读 · 0 评论 -
简单排序(冒泡、插入、选择、堆排)
本部分内容包括:冒泡排序、插入排序、选择排序、堆排序。代码实现: 见我的github:简单排序(冒泡、插入、选择、堆排)一、冒泡排序 设计思路: 1.每次比较相邻的两个元素,排序从小到大。 2.每次从头比到尾,能确定一个...原创 2018-07-20 13:51:42 · 351 阅读 · 0 评论 -
最长公共子序列算法(LCS)
一、问题描述 LCS算法,找出两个字符串最大匹配子串。二、解题思路 设置两个矩阵,一个保存每次字符匹配的最大结果值,一个保存匹配符号。 在按行按列逐个字符匹配的过程中, 若匹配相同,则把上一次匹配的数量值加一(一般是矩阵左上角的数值),同时更新标记矩阵。 若不匹...原创 2018-07-19 11:51:26 · 3383 阅读 · 0 评论 -
机器学习:基本概念
一、基本概念 列满秩:说明特性满秩,元组个数(n)大于特性个数。 病态矩阵:对于有些矩阵,矩阵中某个元素的一个很小的变动,会引起最后计算结果误差很大,这种矩阵称为“病态矩阵”。有些时候不正确的计算方法也会使一个正常的矩阵在运算中表现出病态。对于高斯消去法来说,如果主元(即对角线上的元素)上的元素很小,在计算时就会表现出病态的特征。 脊回归(又叫...原创 2018-07-23 10:36:47 · 192 阅读 · 0 评论 -
最大子段和
一、问题描述 已知数组A[1..n]中存放着一些实数,有正有负,请写程序找出其最大求和子区间,即:找出下标i和j,1≤i≤j≤n,使得的值达到最大。二、解题思路 1. 用一个temp_best进行数值累加 2. 当temp_best比best大的时候,更新数据。 3. 当temp_best小于零的时候,从头...原创 2018-07-20 14:02:54 · 190 阅读 · 0 评论 -
排序(归并、桶排、基数排序、计数排序)
本部分内容包括:归并、桶排、基数排序、计数排序代码实现: 见我的github:排序(归并、桶排、基数排序、计数排序)一、归并排序 设计思路1、数组分成两段,每段去排序2、排序时判断这两段是否越界,越界停止返回3、实行归并 注意事项:灌装数组的时候,需要注意temp数组的起始位置。二、桶排序 ...原创 2018-08-24 15:27:30 · 289 阅读 · 0 评论 -
背包问题(动态规划)
一、问题描述 在限定背包重量的情况下,选择最优价值的物品放入背包,使总体价值最大。二、解题思路 1.确定状态转换方程。 2.找出所选物品。 三、注意事项 1.优化空间复杂度:采用一维数组代替二维数组。但是存在无法回找装入物品的弊端。四、代码实现 见我的github:backpack...原创 2018-09-22 21:24:07 · 313 阅读 · 0 评论 -
Java实现队列
一、问题描述 Java实现队列:普通队列、循环队列(数组、链队)、优先队列 方法:增加(入队)、删除(出队)、查找、队列长度、 分析:Java jdk中实现形式二、解题思路 三、注意事项 1.。四、代码实现 见我的github:...原创 2018-09-21 21:14:39 · 261 阅读 · 0 评论 -
完全多部图
一、问题描述 给定一张包含N个点、M条边的无向图,每条边连接两个不同的点,且任意两点间最多只有一条边。对于这样的简单无向图,如果能将所有点划分成若干个集合,使得任意两个同一集合内的点之间没有边相连,任意两个不同集合内的点之间有边相连,则称该图为完全多部图。现在你需要判断给定的图是否为完全多部图。 输入:第一行输入一个整数T表示数据组数,1≤T≤10。每组数据格式...原创 2018-09-10 12:49:26 · 1118 阅读 · 0 评论