笔试题
实际笔试过程遇到的值得记录的问题。
快乐的小J
基础不牢,地动山摇。
展开
-
马里奥跳板最小步数问题
题目描述:存在n个跳板,马里奥随机落在第k块跳板上,要求马里奥到达最右侧跳板之后的空间,即可完成任务。a[i]表示第i块跳板可以跳跃的数目,例如a[i]=x,若马里奥落在第i块跳板上,则马里奥可以向前或向后跳跃0~i任意步数。解题思路:1. 树搜索 2. 贪心&循环代码思路:此处使用循环,求解所有跳板的最优解。对于第i块跳板,搜索i-a[i]到i+a[i]范围内最小的到达目的地的步...原创 2019-06-30 21:14:40 · 197 阅读 · 0 评论 -
回溯总结-惭愧惭愧
关于回溯有一个很好的博客【https://leetcode-cn.com/problems/subsets/solution/xiang-xi-jie-shao-di-gui-hui-su-de-tao-lu-by-reedf/】回溯法有一个书写模板,大致如下:void func(index, currAns, answer) if(达到终止条件){ //判断当前结果是否符合条件 ...原创 2020-03-18 11:44:44 · 114 阅读 · 0 评论 -
最长公共子序列的O(n^2)与O(nlogn)求法(最长递增子序列的求法O(nlogn))
题目描述:给定两个数组A和B,A和B的元素相同,顺序不同,并且一个数组中的元素没有重复,删除最少的元素,使A和B元素个数与顺序相同。例如A={1,3,5,2},B={3,2,1,5},删除3和2之后A数组与B数组元素个数与顺序相同(元素个数小于100000)。思路:找出A和B的最长公共子序列,删除其余元素即可。需要注意的点:元素个数100000级别,如果写O(n^2)的最长公共子序列算法,...原创 2019-08-28 21:19:26 · 294 阅读 · 0 评论 -
求最小的不满意度
题目:队伍中有n个顾客,从1到n编号。每个顾客有两个属性ai和bi,每个顾客不满意度等于站在他前面的人数与ai的乘积,加上站在他后面的人数与bi的乘积。比如,当顾客i位于位置j,他的不满意度=ai*(j-1)+bi*(n-j)。请安排每位顾客的位置,使得顾客的不满意度之和最小。解析:第i位顾客的不满意度=ai*(j-1)+bi*(n-j)=(ai-bi)*j+nbi-ai;不满意度总和...原创 2019-09-04 19:54:30 · 797 阅读 · 0 评论 -
二分解法的题目
题目:m个结点的分布式系统中,有n个任务需要执行,第i个任务执行的时间是array[i],每个结点同一时刻只能执行一个任务,并且一个结点上执行的任务序列必须是连续的,例如i,i+1,i+2,不能执行i,i+2。求最短执行时间。思路:该问题可以简化为放隔板问题,即:在不可变序的array序列中,放置m-1块隔板,使得每一段之和的最大值最小化。有两种方法解决:(1)动态规划,复杂度O(n^...原创 2019-09-04 21:37:15 · 377 阅读 · 0 评论 -
括号字符串表示的二叉树,用栈转换为树结构
题目描述:字符串str="1(2(3,4(,5)),6(7,))"表示一棵二叉树,其中A(B,C)表示A为根结点,B和C为A的左右子节点。根据字符串输出二叉树的中序遍历。思路:利用栈记录当前构建子树的根结点,利用方向标识记录当前构建子树方向(左子树/右子树)。具体步骤如下:1. 遇到左括号,说明开始构建新的子树,将左括号之前的值入栈并且将方向flag置为true(表示接下来构建左子树)。此...原创 2019-09-10 13:21:30 · 1550 阅读 · 0 评论 -
利用栈和队列,翻转带括号的字符串
题目描述:字符串str="((ur)oi)",()表示需要将括号内部的字符串翻转,输出翻转后的字符串。示例输出为"iour"。思路:利用栈将括号内的字符串翻转,利用队列存储翻转后的字符串。具体思路如下:1. 遍历str的字符,如果字符不是')',压入栈中;2. 如果是')',从栈顶依次弹出元素,将弹出元素压入队列,直到栈顶元素为'(',弹出左括号;3. 将队列元素依次出队,出队元素...原创 2019-09-10 15:18:29 · 532 阅读 · 0 评论