随笔分类 - 算法题小览
摘要:【来源】网上流传的2017美团秋招笔试题 【问题描述】 两个测试样例输出都是5 【算法思路】 暴力解法时间会超限,使用一种很巧妙的数学方法。用在读取数组arr时用数组sum记录其前 i 项的和,即 sum[i] = arr[1]+arr[2]+...+arr[i]。利用这一个数学性质:假设前m项之和
阅读全文
摘要:【来源】网上流传的2017-360秋招笔试题 【问题描述】 【算法思路】 直接求解会超时。使用“线段树”,节点信息为当前区段的元素个数。假设输入元素最大值为M, 建立有M个叶子节点的树,再依次插入元素并向上更新节点信息。 【程序】
阅读全文
摘要:【来源】网传的2018阿里秋招笔试题 【问题描述】 城市有 N 个路口,每个路口有自己编号,从0 ~ N-1, 每个路口有自己的交通控制信号,比如 0,3 表示 0 号路口的交通信号每隔 3 个时刻变化一次,即0,1,2时刻可以过,而3,4,5时刻不能过,而6,7,8时刻又可以过,以次类推,所有路口
阅读全文
摘要:【问题描述】 给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。 【输入输出】 输入为两行: 第一行为两个正整数n(1 ≤ n ≤ 1000),sum(1 ≤ sum ≤ 1000) 第二行为n个
阅读全文
摘要:【问题描述】 给定由 n个整数(可能为负整数)组成的序列,以及一个正整数 m,要求确定序列 m个不相交子段,使得这m个子段的总和达到最大,求出最大和。 【算法思想】 动态规划基本思路: 首先,定义数组seq[n]存储n个整数组成的序列, dp(i,j) 表示由前 j项得到的含i个字段的最大值,且最后
阅读全文
摘要:【问题描述】 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。 【输入格式】 输入第一行给出一个正整数N(<=30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出
阅读全文

浙公网安备 33010602011771号