给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。
动态规划方法一:动态规划对于下标 i,下雨后水能到达的最大高度等于下标 i 两边的最大高度的最小值,下标 i 处能接的雨水量等于下标 i 处的水能到达的最大高度减去 height[i]。
朴素的做法是对于数组 height 中的每个元素,分别向左和向右扫描并记录左边和右边的最大高度,然后计算每个下标位置能接的雨水量。假设数组 height 的长度为 n,该做法需要对每个下标位置使用 O(n) 的时间向两边扫描并得到最大高度,因此总时间复杂度是 O(n2)。
上述做法的时间复杂度较高是因为需要对每个下标位置都向两边扫描。如果已经知道每个位置两边的最大高度,则可以在 O(n) 的时间内得到能接的雨水总量。使用动态规划的方法,可以在 O(n) 的时间内预处 ...
TypeScript解析Array.filter方法需求分析给定一个整数数组 arr 和一个过滤函数 fn,并返回一个过滤后的数组 filteredArr 。
fn 函数接受一个或两个参数:
arr[i] - arr 中的数字i - arr[i] 的索引filteredArr 应该只包含使表达式 fn(arr[i], i) 的值为 真值 的 arr 中的元素。真值 是指 Boolean(value) 返回参数为 true 的值。
解析注意!!Array.filter 是数组原型上的方法。这个实现是一个函数,接受数组作为第一个参数。传递给 Array.filter 的回调函数具有对原始数组的引用,作为第三个参数传递。这个实现的回调函数只接受两个参数。Array.filter 可选地允许你传递一个 thisArg 作为第二个参数。如果提供了 thisArg,传递的回调将绑定到该上下文(假设回调不是箭头函数,因为它们不能绑定)。Array.filter 处理稀疏数组。例如,如果你编写代码 let arr = Array(100); arr[1]= 10;,Array.fi ...
使用 JavaScript 技巧优化网站加载速度DOM 操作:减少重绘,提升效率频繁的 DOM 操作会触发浏览器重新渲染页面,导致页面卡顿,影响用户体验。如何优化:使用 DocumentFragment 批量更新 DOM:
DocumentFragment 是一个轻量级的 DOM 节点,可以用来暂时存储多个 DOM 元素,然后一次性添加到页面中。 这样可以有效减少页面重绘次数,提升性能。
例如,在循环添加多个元素时,可以使用 DocumentFragment 将所有元素构建好,最后再添加到页面中。
// 使用 DocumentFragment 批量添加元素
const fragment = document.createDocumentFragment();
const data = ['Item 1', 'Item 2', 'Item 3'];
data.forEach(item => {
const element = document.createElement('div'); ...
一、防火墙相关命令
1、d查看防火墙状态 :systemctl status firewalld.service
注:active是绿的running表示防火墙开启
2、关闭防火墙 :systemctl stop firewalld.service
3、开机禁用防火墙自启命令 :systemctl disable firewalld.service
4、启动防火墙 :systemctl start firewalld.service
5、防火墙随系统开启启动 : systemctl enable firewalld.service
6、重启防火墙 : firewall-cmd --reload
二、端口开放相关命令
1、查询已经开放的端口 :firewall-cmd --list-port
2、查询某个端口是否开放 :firewall-cmd --query-port=80/tcp
3、开启端口 :firewall-cmd --zone=public --add-port=80/tcp --permanent
注:可以是一个端口范围, ...
这是第一行;
移动光标的方法
h 或 向左箭头键(←)
光标向左移动一个字符
j 或 向下箭头键(↓)
光标向下移动一个字符
k 或 向上箭头键(↑)
光标向上移动一个字符
l 或 向右箭头键(→)
光标向右移动一个字符
如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。 如果想要进行多次移动的话,例如向下移动 30 行,可以使用 "30j" 或 "30↓" 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可!
[Ctrl] + [f]
屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
...