算法
文章平均质量分 94
算法练习记录
Beta Lemon
盖将自其变者而观之,则天地曾不能以一瞬
展开
-
【LeetCode 笔记】DFS & BFS
记录一下最近的笔试题题目描述看电影选座位,座位用m*n的二维矩阵表示,用1代表该作为已选,0代表未选。求选择出最大的相邻空座位个数(上下左右为相邻)。示例一:输入:471 0 0 1 0 0 01 0 0 0 0 1 10 0 0 1 0 0 01 1 0 1 1 0 0输出:18示例二:输入:471 0 0 1 0 0 01 0 0 1 0 1 10 0 0 1 0 0 01 1 0 1 1 0 0输出:9解题思路1. 递归查找.原创 2022-04-26 15:15:57 · 593 阅读 · 2 评论 -
二叉排序树的相关算法
1. 判断给定的二叉树是否是二叉排序树利用中序遍历,若始终能保持前一个值比后一个值小,则是二叉排序树。int predt = -32767; //中序前驱的值int JudgeBST(BiTree bt){ int left, right; if(bt == NULL) //空树 return 1; else { left = JudgeBST(bt->lchild); //判断左子树 if(left == 0 || predt >= bt->data) //左子原创 2020-12-10 16:36:10 · 1595 阅读 · 3 评论 -
在二叉排序树中,找所有结点值小于 x 中的最大结点
题目描述找二叉排序树中,结点值小于 x 且是所有小于 x 的结点中最大的结点。其中,二叉排序树定义如下:typedef struct BTNode { int val; struct BTNode *lchild; struct BTNode *rchild;} BSTNode, *BiTree;算法思路用max记录当前遍历到的比x小的最大值,使用bt遍历二叉排序树;在 bt->val >= x 的结点的左子树中查找;在 bt->val < x 的结点的右子原创 2020-07-04 18:29:17 · 2930 阅读 · 7 评论 -
二分查找算法细节详解
思路我相信对很多读者朋友来说,编写二分查找的算法代码属于玄学编程,虽然看起来很简单,就是会出错,要么会漏个等号,要么少加个 1。不要气馁,因为二分查找其实并不简单。看看 Knuth 大佬(发明 KMP 算法的那位)怎么说的:Although the basic idea of binary search is comparatively straightforward,the detai...转载 2020-04-08 20:30:30 · 2469 阅读 · 2 评论 -
【LeetCode 笔记】动态规划
一篇博文便涉水:《为什么你学不过动态规划?告别动态规划,谈谈我的经验》从中摘出来的中心思想方法:文中讲解了3道例题,依次为:以下均是基于数组空间的DP解法,在后续可以对空间进行优化,达到 O(1)O(1)O(1)大佬的经验附:LeetCode 动态规划入口解题思路:想到了一次的正序遍历,但是结果求出的是非连续序列的最大和:官方题解:简而言之,就是检测:定义数组元素含义定义记录局部最大和,表示当前局部最大和定义状态转移方程要取最大值,则要看 是加了之后变大,还是原来就比较大,肯定不能是加了一个数之后反原创 2020-04-07 17:52:54 · 502 阅读 · 0 评论 -
就地逆置线性表元素(基本操作 + 扩展)
本文分为线性表逆置操作的基本操作和扩展操作原创 2020-03-19 19:43:25 · 733 阅读 · 0 评论 -
如何判断身份证顶点的相对位置
已知身份证的四个角点,判断它们的相对位置问题的多次尝试...原创 2020-03-18 23:25:07 · 1552 阅读 · 1 评论