
数据结构与算法
文章平均质量分 57
prontH
一地鸡毛不需人知,岁月静好且自从容
展开
-
Leetcode 43(接雨水问题)
其中,n 表示数组的长度,left 和 right 分别表示左右指针,leftMax 和 rightMax 分别表示左侧和右侧的最大高度,ans 表示雨水的总量。首先判断数组是否为空,如果为空则直接返回 0。动态规划法的思路是先遍历一遍数组,对于每个位置 i,分别求出左侧和右侧的最大高度 left_max 和 right_max,然后计算出该位置能接到的雨水量,即 min(left_max, right_max) - height[i],最后将每个位置的雨水量相加即可得到总雨水量。原创 2023-02-17 11:55:51 · 234 阅读 · 0 评论 -
矩阵的传染与子矩阵
一个矩阵中只有0和1两种值,每个位置都可以和自己的上、下、左、右 四个位置相连,如。* 果有一片1连在一起,这个部分叫做一个岛,求一个矩阵中有多少个岛?可对矩阵的特定值进行处理,忽略掉其他值,因为其他值已经传染了。@Description: 岛问题。矩阵的传染过程能够将除了。* 这个矩阵中有三个岛。原创 2023-02-17 12:03:00 · 184 阅读 · 0 评论 -
背包问题分析及解法
给定两个长度都为N的数组weights和values,weights[i]和values[i]分别代表 i号物品的重量和价值。给定一个正数bag,表示一个载重bag的袋子,你装的物 品不能超过这个重量。返回你能装下最多的价值是多少?第一种是已经装载的重量超过了袋子的最大承重。这时候就需要将超重的这个商品减掉。第二种是没有东西可以装了。process1函数返回的是要这个商品和不要这个商品中价值最大的。使用暴力递归,将长度为N的数全排列即可。就比如长度为4的数组。第二种解法:递归改动态规划。原创 2022-09-12 19:15:35 · 230 阅读 · 0 评论 -
N皇后问题
N皇后问题是指在N*N的棋盘上要摆N个皇后,要求任何两个皇后不同行、不同列, 也不在同一条斜线上。给定一个整数n,返回n皇后的摆法有多少种。n=2或3,2皇后和3皇后问题无论怎么摆都不行,返回0。此时,之前放过的皇后位置都被记录到数组中,在来到新的一行新的一列中,遍历数组并判断是否共列、共行、共斜线。如果是其中的一项,则皇后不在这一列中,换到下一列继续判断。如果不是共行、共斜线,共列。可以用集合或者数组记录放过的皇后位置,这里用数组。isValid()方法使用来判断是否共列,共斜线的方法。原创 2022-09-12 18:40:06 · 314 阅读 · 0 评论 -
前缀树的各种操作
前缀树,又称字典树。它是一棵 N 叉树。前缀树一般用于存储、查找字符串。运用前缀树可以进行增删查等操作。查询以......前缀的字符串。原创 2022-09-06 11:34:34 · 250 阅读 · 0 评论 -
贪心算法的证明与面试解法
任何String类型的字符串都可以算作k进制的数,将"abc"和"de"这两个字符串拼接为"abcde"可以表示为"abc"*k^2+"de",即"abc"向右移动2位加"de"。给定一个字符串数组,决定一种拼接方式,将每一个字符串都拼接起来使最后的大字符串的字典序(长度一样化作26进制比较,长度不一样将短的补位0)最小。(给你一个数组,里面是一个个具体的项目),你来安排宣讲的日程,要求会议室进行的宣讲的次数最多。结论就是a字符串和b字符串做拼接,就是a*k^b+b,向左移动了b长度为,将b填充上低位。原创 2022-09-05 14:21:52 · 435 阅读 · 0 评论 -
二叉树的遍历
将上面的二叉树递归,每次递归打印一次就变成了一个递归序以2为头节点的子树遍历:2,4,4,4,2,0,0,0,2由于每个节点都有两个指针。所以都会经历三次打印(来到该节点打印一次)(该节点的左子节点打印完成之后返回该节点打印一次)(该节点的右子节点打印完成之后返回该节点打印一次)...原创 2022-08-13 10:37:51 · 177 阅读 · 0 评论