随笔分类 -  编程题解

摘要:本文发表在博客园乌漆 WhiteMoon(https://www.cnblogs.com/linfangnan/),只要不是在博客园看到这篇文章的都是爬虫的哈。 #蛮力法 蛮力法也称穷举法或枚举法,是一种简单直接地解决问题的方法,常常直接基于问题的描述,所以蛮力法也是最容易应用的方法。蛮力法所依赖的 阅读全文
posted @ 2022-10-15 21:06 乌漆WhiteMoon 阅读(1245) 评论(0) 推荐(1) 编辑
摘要:#八数码问题 八数码游戏(八数码问题)描述为:在 3×3 组成的九宫格棋盘上,摆有八个将牌,每一个将牌都刻有 1-8 八个数码中的某一个数码。棋盘中留有一个空格,允许其周围的某一个将牌向空格移动,这样通过移动将牌就可以不断改变将牌的布局。这种游戏求解的问题是:给定一种初始的将牌布局或结构(称初始状态 阅读全文
posted @ 2022-03-25 17:07 乌漆WhiteMoon 阅读(884) 评论(0) 推荐(1) 编辑
摘要:#获奖 ##题干 在某次竞赛中,判题规则是按解题数从多到少排序,在解题数相同的情况下,按总成绩(保证各不相同)从高到低排序,取排名前 60% 的参赛队(四舍五入取整)获奖,请确定某个队能否获奖。 ##输入格式 首先输入一个正整数 T,表示测试数据的组数,然后是 T 组测试数据。每组测试的第一行输入 阅读全文
posted @ 2021-10-02 01:42 乌漆WhiteMoon 阅读(1306) 评论(0) 推荐(2) 编辑
摘要:#题 11:旋转数组的最小数字 ##题干 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。——《剑指 Offer》P82 ##测 阅读全文
posted @ 2021-07-28 06:51 乌漆WhiteMoon 阅读(54) 评论(0) 推荐(1) 编辑
摘要:#题 28:对称二叉树 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。——《剑指 Offer》P159 例如对于如图所示二叉树是对称二叉树。 例如对于如图所示二叉树不是对称二叉树。 二叉树结点定义为: class TreeNode: def __ini 阅读全文
posted @ 2021-07-27 00:10 乌漆WhiteMoon 阅读(53) 评论(0) 推荐(1) 编辑
摘要:本来我不是很想写这道题,但是看了 leetcode 的题解后觉得还是值得写的地方。 #题 55:二叉树的深度 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。——《剑指 Offer》P271 例如对于如图二叉树,二叉树的 阅读全文
posted @ 2021-07-26 15:05 乌漆WhiteMoon 阅读(91) 评论(0) 推荐(1) 编辑
摘要:#二叉搜索树的最近公共祖先 ##题干 给定一个二叉搜索树,找到该树中两个指定节点的最近公共祖先。最近公共祖先是对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。 例如对于如图的二叉搜索树,节点 1 阅读全文
posted @ 2021-07-24 01:12 乌漆WhiteMoon 阅读(177) 评论(0) 推荐(1) 编辑
摘要:#题 14:剪绳子 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]k[1]...*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3 阅读全文
posted @ 2021-07-21 00:10 乌漆WhiteMoon 阅读(158) 评论(0) 推荐(1) 编辑
摘要:#题 9:用两个栈实现队列 题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。——《剑指 Offer》P68 #解题思路 队列是先进先出的结构,将一系列的数据入队列后全部出队列,这些数 阅读全文
posted @ 2021-05-24 00:02 乌漆WhiteMoon 阅读(86) 评论(0) 推荐(1) 编辑
摘要:#题 27:二叉树的镜像 ##题干 题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。——《剑指 Offer》P157 ##测试用例 二叉树的类定义如下(python): # Definition for a binary tree node. class TreeNode: def __i 阅读全文
posted @ 2021-05-23 00:08 乌漆WhiteMoon 阅读(82) 评论(0) 推荐(1) 编辑
摘要:#二叉搜索树 这道题目使用二叉搜索树实现,并且都要用到插入结点和查找结点的基操。更多基础内容可以查看博客——树表查找。 ##结构体定义 typedef struct TNode { int data; struct TNode* left, * right; } TNode, * BinTree; 阅读全文
posted @ 2021-04-23 19:47 乌漆WhiteMoon 阅读(908) 评论(0) 推荐(3) 编辑
摘要:#题 25:合并两个排序的链表 ##题干 输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。——《剑指 Offer》P145 ##测试样例 链表的数据结构定义如下(Python): class ListNode: def __init__(self, x): self.v 阅读全文
posted @ 2021-04-18 23:19 乌漆WhiteMoon 阅读(87) 评论(0) 推荐(2) 编辑
摘要:#题 22:链表中倒数第 k 个结点 ##题干 输入一个链表,输出该链表中倒数第 k 个结点。为了符合大多数人的习惯,本题从 1 开始计数,即链表的尾结点是倒数第 1 个结点。例如一个链表有 6 个结点,从头结点开始它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个结点是值为 4 的结 阅读全文
posted @ 2021-04-17 14:39 乌漆WhiteMoon 阅读(88) 评论(0) 推荐(2) 编辑
摘要:#题 24:反转链表 ##题干 定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。——《剑指 Offer》P142 ##测试样例 链表的数据结构定义如下(Python): class ListNode: def __init__(self, x): self.val = x s 阅读全文
posted @ 2021-04-16 21:13 乌漆WhiteMoon 阅读(97) 评论(0) 推荐(2) 编辑
摘要:#面试题 6:从尾到头打印链表 ##题干 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。——《剑指 Offer》P58 这道题可以直接将链表的元素转存到另一个数组或 vector 中反向输出,也可以使用 vector 的 reverse() 方法。这些方法都较为简单粗暴,博客中就不对 阅读全文
posted @ 2021-04-15 22:48 乌漆WhiteMoon 阅读(92) 评论(0) 推荐(2) 编辑
摘要:#题 7:重建二叉树 ##题干 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1, 2, 4, 7, 3, 5, 6, 8}和中序遍历序列{4, 7, 2, 1, 5, 3, 8, 6},则重建出图所示的二叉树并 阅读全文
posted @ 2021-04-09 00:51 乌漆WhiteMoon 阅读(118) 评论(0) 推荐(2) 编辑
摘要:#题 4:二维数组中的查找 ##题干 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。——《剑指 Offer》P44 ##测试用例 二维数组中包含查找的数字(査找的数字是数组中的最大 阅读全文
posted @ 2021-03-31 09:06 乌漆WhiteMoon 阅读(85) 评论(0) 推荐(2) 编辑
摘要:#题 3_1:找出数组中重复的数字 ##题干 在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为 7 的数组{2, 3, 1, 0, 2, 5, 3}, 阅读全文
posted @ 2021-03-26 23:06 乌漆WhiteMoon 阅读(99) 评论(0) 推荐(2) 编辑
摘要:#回溯算法 蛮力法是对整个解空间树中的所有可能解进行穷举搜索的一种方法,但是只有满足约束条件的解才是可行解。在满足约束条件的前提下,只有满足目标函数的解才是最优解,因此结合目标函数进行搜索就有可能减少搜索空间。回溯法从根结点岀发,按照深度优先策略遍历解空间树,搜索满足约束条件的解。在搜索至树中任一结 阅读全文
posted @ 2021-01-16 11:35 乌漆WhiteMoon 阅读(3241) 评论(7) 推荐(2) 编辑
摘要:#动态规划法 动态规划法将待求解问题分解成若干个相互重叠的子问题,每个子问题对应决策过程的一个阶段,一般来说,子问题的重叠关系表现在对给定问题求解的递推关系称为动态规划函数中,将子问题的解求解一次并填入表中,当需要再次求解此子问题时,可以通过查表获得该子问题的解,从而避免了大量重复计算。具体的动态规 阅读全文
posted @ 2020-12-01 12:50 乌漆WhiteMoon 阅读(3738) 评论(0) 推荐(2) 编辑