算法
文章平均质量分 91
勤奋乐观(zjuicct)
这个作者很懒,什么都没留下…
展开
-
算法设计与分析基础 第一章谜题
习题1.110.b 欧几里得游戏 一开始,板上写有两个不相等的正整数,两个玩家交替写数字,每一次,当前玩家都必须在板上写出任意两个板上数字的差,而且这两个数字必须是新的,也就是说,不能与板上任何一个已有的数字相同。当玩家再也写不出新数字时,他就输了。请问,你是选择先行动还是后行动呢?分析:这个游戏和欧几里得算法的减法版本有点类似,所以在黑板上能写上的最小的正整数就是他们的最大公约数。假设最...原创 2018-10-30 10:30:55 · 3322 阅读 · 1 评论 -
剑指offer刷题记录(C++)
1.二维数组的查找在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class Solution {public: bool Find(int target, vector<vector<int> > array)...原创 2019-09-05 15:12:52 · 606 阅读 · 0 评论 -
程序员代码面试指南 第四章 递归和动态规划
4.1 斐波那契系列的递归和动态规划4.2 矩阵的最小和路径4.3 换钱的最少货币数4.4 换钱的方法数4.5 最长递增子序列4.6 汉诺塔问题4.7 最长公共子序列问题4.8 最小编辑代价4.9 字符串的额交错组成4.10 龙与地下城游戏4.11 数字字符串转换为字母组合的种数4.12 ...原创 2019-07-19 16:42:48 · 220 阅读 · 0 评论 -
程序员代码面试指南 第五章 字符串问题
5.1 判断两个字符串是否互为变形词5.2 字符串中数字子串的求和5.3 去掉字符串中连续出现k个0的子串5.4 判断两个字符串是否互为旋转词5.5 将整数字符串转换成整数值class Solution {public: int StrToInt(string str) { if (str == "")return 0; if (!vali...原创 2019-06-16 19:02:48 · 227 阅读 · 0 评论 -
程序员代码面试指南 第三章 二叉树问题
3.1 分别用递归和非递归方式实现二叉树先序、中序和后序遍历(LeetCode 144)/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : ...原创 2019-04-29 19:29:01 · 201 阅读 · 0 评论 -
程序员代码面试指南 第二章 链表问题
2.1 打印两个有序链表的公共部分思路:因为是有序链表,所以从两个链表的头开始进行如下判断:如果head1的值小于head2,则head1往下移动。如果head2的值小于head1,则head2往下移动。如果head1的值与head2的值相等,则打印这个值,然后head1和head2都往下移动。head1和head2有任何一个移动到null,则整个过程停止。2.2 在单链表和双链表中删除倒...原创 2019-03-17 23:13:22 · 244 阅读 · 0 评论 -
程序员代码面试指南 第一章 栈与队列
1.1设计一个有getMin功能的栈(LC155)class MinStack {public: /** initialize your data structure here. */ MinStack() { } void push(int x) { s.push(x); if(smin.empt...原创 2019-03-17 20:46:10 · 227 阅读 · 0 评论 -
算法设计与分析基础 第十章谜题
习题10.18.我们是不是能应用单纯形法来解决背包问题(参见6.6节的例2)?如果你认为能,请指出这是不是一个解决该问题的好算法;如果你认为不能,请说明原因。解答:可以通过单纯形法解决背包问题的连续版本,因为它是一般线性规划问题的一个特例(见6.6节中的例2)。 然而,它不是解决这个问题的好方法,因为它可以通过基于贪婪法的更简单的算法更有效地解决。由于对问题变量施加的完整性(0-1)约束,...原创 2018-12-27 15:12:04 · 1485 阅读 · 0 评论 -
算法设计与分析基础 第九章谜题
习题9.16.向下均分 有n>1个相同的缸,其中一个有W品脱的水,而别的缸为空。你被允许执行下列操作:取两个缸,然后把他们中的水在两个缸之间均分。目标是通过执行上述一系列操作,使得初始有水的缸中水最小化。完成这个任务的最好方法是什么?解答:为了使初始有水的缸中(设为编号0)水最小,每次让它都和剩余的空缸进行均分,每一次操作都使缸中的水减少二分之一,这是减少最多的操作。当和所有的空缸...原创 2018-12-27 15:07:47 · 3783 阅读 · 0 评论 -
算法设计与分析基础 第八章谜题
习题8.16.切割木棍问题 为下列问题设计一个动态规划算法。已知小木棍的销售价格pi和长度i相关,i=1,2,…,n,如何把长度为n的木棍切割为若干根长度为整数的小木棍,使得所获得的总销售价格最大?该算法的时间效率和空间效率各是多少?解答:令长度为n的木棍能获得的最大价格为profit[n],递推公式为:profit[n] = max(pi[i] + profit[length - seg...原创 2018-12-27 15:03:42 · 6628 阅读 · 0 评论 -
算法设计与分析基础 第七章谜题
习题7.16. 祖先问题要求在一棵给定的n顶点二叉树中,确定一个顶点u是否是顶点v的祖先。设计一个属于O(n)的输入增强算法,使我们可以在常量时间内获得树的每一对顶点的足够信息,来对问题求解。分析:一个顶点u是顶点v的祖先,当前仅当先序遍历u在v的前面,并且后序遍历u在v的后面。第一个条件,先序遍历u在v的前面,代表要么u是v的祖先,要么u在公共祖先的左子树中而v在公共祖先的右子树中;第二...原创 2018-12-27 14:59:06 · 4373 阅读 · 3 评论 -
算法设计与分析基础 第六章谜题
习题6.19.数字填空 给定n个不同的整数以及一个包含n个空格的序列,每个空格之间事先给定有不等(>或<)符号,请设计一个算法,将n个整数填入这n个空格中并满足不等式约束。例如,数4,6,3,1,8可以填在这样的5个空格中:解答:将n个正整数从小到大排序,然后将数字填入空格之中:从左到右遍历每一个空格,若空格之后是小于号,则填入当前正整数序列中的最小值;若为大于号,则填入当...原创 2018-11-29 09:38:57 · 4246 阅读 · 0 评论 -
算法设计与分析基础 第五章谜题
习题5.111.Tromino谜题 Tromino是一个由棋盘上的三个1×1方块组成的L型骨牌。我们的问题是,如何用Tromino覆盖一个缺少了一个方块的2n×2n棋盘。除了这个缺失的方块,Tromino应该覆盖棋盘上的所有方块,Tromino可以任意转向但不能有重叠。为此问题设计一个分治算法。分析:n>0时,可将2n×2n的棋盘划分为4个2n-1×2n-1的子棋盘。这样划...原创 2018-11-16 16:23:24 · 4256 阅读 · 3 评论 -
算法设计与分析基础 第四章谜题
习题4.11.摆渡的士兵 n个士兵组成的分队必须越过一条又深又宽又没有桥的河。他们注意到在岸旁有两个12岁大的小男孩在玩划艇。然而船非常小,只能容纳两个男孩或一名士兵。怎样才能让士兵渡过河,并且留下两个男孩操纵这条船?这条船要在岸与岸之间横渡多少次?解答:每次只能容纳一名士兵,所以士兵一定是一个一个过河,同时需要有小男孩将船划回来,那么每一次士兵过河之前,两个小男孩先划船过去,然后一个小男...原创 2018-11-14 16:26:32 · 10929 阅读 · 2 评论 -
算法设计与分析基础 第三章谜题
习题3.16.四格拼板 四格拼板是由4个1*1的正方形组成。下面是5种类型的四格拼板:分别利用以下四格拼板,看看是否有可能在不重叠的情况下完全覆盖一个8*8的棋盘。a. 直线拼板 可以,长和宽能被8整除b. 方形拼板 可以,边长能被8整除c. L形拼板 可以,两个拼板组成2*4拼板,长和宽能被8整除d. T形拼板 可以,用四个拼板组成4*4拼板,边长能被...原创 2018-11-12 09:47:18 · 9013 阅读 · 3 评论 -
算法分析与设计基础 第二章谜题
习题2.14. a. 选择手套 在一个抽屉里有22只手套:5双红手套、4双黄手套和2双绿手套。你在黑暗中挑选手套,而且只能在选好以后才能检查它们的颜色。在最优的情况下,你最少选几只手套就能找到一双匹配的手套?在最差的情况下呢?解答:最优情况:2只;最差情况:12只。b. 丢失的袜子 假设在洗了5双各不相同的袜子以后,你发现有两只袜子找不到了。当然,你希望留下数量最多的袜子。因此,在最好...原创 2018-11-08 10:35:20 · 8677 阅读 · 5 评论 -
LeetCode 刷题记录
1.两数之和等于target。用哈希表。15.三数之和等于target。19.删除链表的倒数第N个节点。设置一个dummy节点指向头结点,快指针移动N个节点,然后快慢指针一同移动。20.三种括号是否正确匹配。用栈。31.求全排列的下一个数。从右到左找到第一个上升的位置k:k+1,从右到左找到比元素k大的j,交换元素jk,逆序k之后的数。42.直方图接雨水。用双指针从两边往中间遍...原创 2019-09-14 15:38:48 · 431 阅读 · 0 评论