常见笔试算法题分析记录
杨柳_
Java服务端研发,喜欢底层原理与基础算法设计
展开
-
【常见笔试面试算法题12】动态规划算法案例分析
给定数组arr,arr中所有数都为正数,且不重复,每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个正整数aim代表要找的钱数,求换钱有多少种方法?这道题可以用暴力搜索,记忆搜索,动态规划,状态继续化简后的动态规划方法等四种方法! 在面试中出现类似的题目,优化轨迹高度类似!1、暴力搜索方法下面先看这道题的暴力搜索方法的过程: 我们认为使用0张5元,让剩下的货...原创 2018-04-07 17:14:48 · 6922 阅读 · 0 评论 -
计数排序的应用----排序字符串
加qq1126137994 微信:liu1126137994 一起学习更多技术!!!题目: 给你一个原始字符串,根据该字符串内每一个字符串出现的次数,按照ASCII码递增的排序重新调整输出。举例: eeefgghh 则每种字符出现的次数分别是: (1).eee 3次 (2).f 1次 (3).gg 2次 (4).hhh 3次 重...原创 2018-04-11 17:23:05 · 822 阅读 · 1 评论 -
n个字符串按照字典序排列
题目描述 给定n个字符串,请对n个字符串按照字典序排列。 输入描述: 输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。输出描述: 数据输出n行,输出结果为按照字典序排列的字符串。输入例子: 9 cap to cat card two too up boat boot输出例子: boat ...原创 2018-04-16 23:15:58 · 15799 阅读 · 1 评论 -
C语言实现位数组(bit数组)与位数组的简单应用举例
今天有朋友遇到一个笔试题:一个 4096位的bit数组,要找出前10个二进制的1 所在的位置,麻烦写一个函数来实现bit数组对我来说是一个新的概念,故整理资料学习bit数组的概念~加qq1126137994一起学习更多技术!!!1、位数组的概念所谓的位数组,主要是为了有效地利用内存空间而设计的一种存储数据的方式。在这种结构中一个整数在内存中用一位(1 bit)表示。这里所谓的表...原创 2018-04-03 08:58:09 · 22686 阅读 · 1 评论 -
【常见笔试面试算法题12续集六】动态规划算法案例分析6 最优编辑练习题
加qq1126137994 一起学习更多技术!!!对于两个字符串A和B,我们需要进行插入、删除和修改操作将A串变为B串,定义c0,c1,c2分别为三种操作的代价,请设计一个高效算法,求出将A串变为B串所需要的最少代价。给定两个字符串A和B,及它们的长度和三种操作代价,请返回将A串变为B串所需要的最小代价。保证两串长度均小于等于300,且三种代价值均小于等于100。测试样例: “abc...原创 2018-04-11 12:40:35 · 903 阅读 · 0 评论 -
面试题:移动数组的元素
加qq 1126137994 一起学习更多技术!!!描述 试设计一个算法,将数组a中的元素a[0]至a[n-1]循环右移k位,并要求只用一个元素大小的附加存储,元素移动或交换次数为O(n)。输入 先输入一个大于1且小于100的正整数n,再输入n个整数存到数组a中,最后输入一个小于n正整数k,输出 循环移动k位后输出。输入样例 5 2 6 15 39 5 3输出样例...原创 2018-04-16 16:27:11 · 637 阅读 · 0 评论 -
【常见笔试面试算法题12续集五】动态规划算法案例分析5 01背包练习题
加qq1126137994 一起学习更多技术!!!一个背包有一定的承重cap,有N件物品,每件都有自己的价值,记录在数组v中,也都有自己的重量,记录在数组w中,每件物品只能选择要装入背包还是不装入背包,要求在不超过背包承重的前提下,选出物品的总价值最大。给定物品的重量w价值v及物品数n和承重cap。请返回最大总价值。测试样例: [1,2,3],[1,2,3],3,6 返回:6...原创 2018-04-10 11:12:58 · 1007 阅读 · 0 评论 -
【常见笔试面试算法题12续集四】动态规划算法案例分析4 LCS练习题练习题(最长公共子序列的长度)
加qq1126137994 一起学习更多技术!!!给定两个字符串A和B,返回两个字符串的最长公共子序列的长度。例如,A=”1A2C3D4B56”,B=”B1D23CA45B6A”,”123456”或者”12C4B6”都是最长公共子序列。给定两个字符串A和B,同时给定两个串的长度n和m,请返回最长公共子序列的长度。保证两串长度均小于等于300。测试样例: “1A2C3D4B56”,10...原创 2018-04-09 11:50:22 · 1121 阅读 · 0 评论 -
【常见笔试面试算法题12续集三】动态规划算法案例分析3 LIS练习题(最长上升子序列)
加qq1126137994 一起学习更多技术!!!这是一个经典的LIS(即最长上升子序列)问题,请设计一个尽量优的解法求出序列的最长上升子序列的长度。给定一个序列arr及它的长度n(长度小于等于500),请返回LIS的长度。测试样例: [2,1,5,3,6,4,8,9,7],9 返回:5分析思路:化简到子问题,那么这道题应该是化简到求该序列长度的前1,2,3,4,5,6…..n...原创 2018-04-09 02:32:23 · 827 阅读 · 0 评论 -
【常见笔试面试算法题12续集二】动态规划算法案例2矩阵最小路径和练习题
加qq1126137994 一起学习更多技术!!!有一个矩阵map,它每个格子有一个权值。从左上角的格子开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,返回所有的路径中最小的路径和。给定一个矩阵map及它的行数n和列数m,请返回最小路径和。保证行列数均小于等于100.测试样例: [[1,2,3],[1,1,1]],2,3 返回:4分析 假...原创 2018-04-09 00:59:27 · 788 阅读 · 0 评论 -
【常见笔试面试算法题12续集一】动态规划算法案例1台阶问题练习题
加qq1126137994 一起学习更多技术!!!以下问题,都可以用非动态规划的方法做,我为了整理动态规划的方法思路,就全部用动态规划的思路来解决问题,这样还可以简化问题的处理,是时间复杂度更低!!!动态规划的核心思想,就是化简问题,将整个问题,分解,从最简单的问题开始计算,慢慢累加,最终,便可以达到求得整体问题的答案,这期间,是需要另外开辟空间的,所以说,动态规划,是以空间,换时间的解决...原创 2018-04-08 22:46:00 · 479 阅读 · 0 评论 -
二叉树的层序遍历详细讲解(附完整C++程序)
加qq1126137994 微信liu1126137994 一起学习更多技术1、原理:层序遍历所要解决的问题很好理解,就是按二叉树从上到下,从左到右依次打印每个节点中存储的数据。如下图: 按层序遍历的原则,打印顺序依次应该是:A->B->C->D->E->F->G。 看完是不是感触非常深,这不就是队列数据结构最拿手的绝活吗,FI...原创 2018-04-20 15:30:24 · 6030 阅读 · 0 评论