DING's blog
  • Home
  • Archives
  • Categories
  • Tags
  • About
  •   
  •   
<数据结构/算法> leetcode hot100系列. 239.滑动窗口最大值

<数据结构/算法> leetcode hot100系列. 239.滑动窗口最大值

[LeetCode hot 100] 239. 滑动窗口最大值 题目链接 非常有趣的一道题。我们首先思考一下,每次窗口移动可能会发生什么事。 假如移出去的那个数不是之前窗口的最大值,那没问题,直接丢掉就可以。 假如移出去的恰好就是窗口的最大值,那么把它移走了,新王登基,怎样又快又准地去找这个新王是谁呢? 我们来看第一种情况,如果这个数不是最大值,说明后面一定存在一个数比它更大。当窗口移动时,由
2024-07-29
Algorithm > C++ > job
#algorithm #slide-window
<数据结构/算法> leetcode hot100系列. 53.最大子数组和

<数据结构/算法> leetcode hot100系列. 53.最大子数组和

[LeetCode hot 100] 53. 最大子数组和 题目链接 这种题我是实在不知道该怎么想出来了,不说思路了,直接说算法流程。 建立一个新的数组maxSum,这个数组下标为i的位置maxSum代表:nums数组中,以第i个数为结尾的子数组之和的最大值。这时就可以利用类似于前缀和的思路。假如我们已经得到了以第i-1个数为结尾的子数组之和的最大值即maxSum[i-1],那么以第i位为结尾的子
2024-07-29
Algorithm > C++ > job
#algorithm #dp
<数据结构/算法> leetcode hot100系列. 94.二叉树中序遍历(附所有顺序遍历的非递归实现)

<数据结构/算法> leetcode hot100系列. 94.二叉树中序遍历(附所有顺序遍历的非递归实现)

[LeetCode hot 100] 94. 二叉树中序遍历 题目链接 这里我们主要说非递归。 由于中序遍历是左子树-根-右子树的顺序,因此我们在设计算法的时候需要使用栈保存根节点,当左子树遍历完了,再将根节点出栈,然后访问右子树。 我们直观的想法就是:首先把根节点进栈,然后左孩子进栈,直到把左子树处理完了之后把根节点露出来,然后输出根节点,根节点出栈,根节点的右孩子入栈。这玩意咋用循环迭代实现呢
2024-07-29
Algorithm > C++ > job
#algorithm #binary-tree
<数据结构/算法> leetcode hot100系列. 110.盛水最多的容器

<数据结构/算法> leetcode hot100系列. 110.盛水最多的容器

[LeetCode hot 100] 110. 盛水最多的容器 题目链接 最烦这种题,因为每次都感觉自己那么接近答案,就是做不出来,像个傻子一样。 怎样思考这个问题?首先我们从左往右看一看,假如有两根柱子,左边的柱子比右边的高,那么当选取这两个柱子之一作为左边的容器壁时,右边的柱子是一定会输的。 考虑数组的左右两个端点,假如左边的柱子更矮,那么右边的柱子无论再怎么高也没有用,这就是所谓的木桶效应。
2024-07-25
Algorithm > C++ > job
#algorithm #two-pointers
<数据结构/算法> leetcode hot100系列. 128.最长连续序列

<数据结构/算法> leetcode hot100系列. 128.最长连续序列

[LeetCode hot 100] 128. 最长连续序列 题目链接 遇到这种题,首先想一想,作为一个人类,我们怎么思考这个问题。我们肯定是每看到一个数就去整个序列里面找有没有挨着的,如果有,那就顺着继续找,最后一个数一个数地摘出来,算一个长度对吗? 简化这个过程,我们不需要每个数都找,而是只需要从一个连续序列开头的那个数往后找就行。 首先先遍历一下这个数组,并且放入集合中,一来是去重,二来是
2024-07-25
Algorithm > C++ > job
#algorithm #hash
<数据结构/算法> leetcode hot100系列. 22.括号生成Generate Parenthesis

<数据结构/算法> leetcode hot100系列. 22.括号生成Generate Parenthesis

[LeetCode hot 100] 49. 字母异位词分组 题目链接 这道题比较直觉的做法就是先对每个词排序,因为不同异位词按照字母排序之后的异位词就是统一的了,因此将这个排序后的词作为map的键,查找map时如果存在这个键,就按照map中记录的位置去找这个键对应的异位词分组在返回结果中的位置,并且在这个异位词分组后面加上当前字符串。 123456789101112131415161718192
2024-07-25
Algorithm > C++ > job
#algorithm #hash

使用vue和elementui遇到的各种坑 正则表达式报错 一般是因为其中的反斜杠解析错误,在后面加上 1// eslint-disable-line 这个注释就好 el-form几种表单验证方式 https://blog.csdn.net/weixin_45046532/article/details/137624361 常用表单域验证正则匹配 https://blog.csdn.net/240
2024-07-05
<数据结构/算法> 我一定要学会【堆】-第k大

<数据结构/算法> 我一定要学会【堆】-第k大

我一定要学会【堆】 气死了,每次写关于堆的算法都要重新复习一遍,今天一定要搞清楚。 什么是堆 堆是一种数据结构,其中的数据以完全二叉树的逻辑组织,但是存储数据的结构使用的是数组。也就是说,要用数组表示一个树的结构。堆分为两种: 大根堆:树中任何一个节点大于或等于他的两个孩子节点。 小根堆:与大根堆相反。 我们这里以大根堆为例。 堆在数组中存放的顺序是层序,也就是说先存第一层,再存第二层,……由
2024-06-20
Algorithm > C++ > job
#algorithm #heap
<数据结构/算法> 各种背包问题详解(01背包,完全背包,多重背包)

<数据结构/算法> 各种背包问题详解(01背包,完全背包,多重背包)

# 动态规划-各种背包问题详解 记得当时学算法的时候可喜欢写背包问题了,因为学会了有种豁然开朗的感觉,仿佛掌握了武功秘籍。这篇文章就来记录一下各种背包问题的场景和解法。 1. 01背包问题 01背包问题是这样的: 假如有一组n个物品,每个物品i都有一个体积v~i~和一个价值s~i~,现在有一个容量有限为V的背包,如何在不超过该背包容量的情况下装走总价值最大的物品? 这个问题的思想是通过从少到多
2024-06-16
Algorithm > C++ > job
#algorithm #dp
<数据结构/算法> leetcode hot100系列. 22.括号生成Generate Parenthesis

<数据结构/算法> leetcode hot100系列. 22.括号生成Generate Parenthesis

[LeetCode hot 100] 22. 括号生成Generate Parenthesis 这个也是一道回溯题,核心是要意识到一个现有的序列中左括号数量一定不能比右括号少,否则就会出现有右括号没有左括号对应的情况。什么都没有的情况下,第一个只能来左括号,当有一个"(“,第二个就可以是”(“或”)“。如果第二个是”(“,第三个是啥都行,但是如果第二个是”)",前面的左括号和右
2024-06-16
Algorithm > C++ > job
#algorithm #backtrack
1234

Search

Hexo Fluid