2021-02-26:一个数组arr是二叉树的中序遍历结果,每条边的开销是父节点和子节点的乘积,总开销是所有边的开销之和。请问最小总开销是多少?

2021-02-26:一个数组arr是二叉树的中序遍历结果,每条边的开销是父节点和子节点的乘积,总开销是所有边的开销之和。请问最小总开销是多少?链接:https://www.nowcoder.com/questionTerminal/0d939e874a004f449a370aca1346dd5c来源:牛客网小团有一个由N个节点组成的二叉树,每个节点有一个权值。定义二叉树每条边的开销为其两端节点权值的乘积,二叉树的总开销即每条边的开销之和。小团按照二叉树的中序遍历依次记录下每个节点的权值,即他记录下了
分类: 其他 发布时间: 03-26 10:27 阅读次数: 0

2021-02-27:假设一个固定大小为W的窗口,依次划过arr,返回每一次滑出状况的最大值。例如,arr = [4,3,5,4,3,3,6,7], W = 3。返回:[5,5,5,4,6,7]。

2021-02-27:假设一个固定大小为W的窗口,依次划过arr,返回每一次滑出状况的最大值。例如,arr = [4,3,5,4,3,3,6,7], W = 3。返回:[5,5,5,4,6,7]。福哥答案2021-02-27:采用双端队列,存序号。遍历数组。1.当双端队列里没值或者双端队列最右边的值小于当前值,则把当前值的序号从右边push到队列里。2.否则pop最右边的序号,直到符合条件为止。3.双端队列左边的序号太小,当前序号-左序号>=窗口大小W,需要pop左边的序号。4.双端队列最
分类: 其他 发布时间: 03-26 10:27 阅读次数: 0

javascript常用方法汇总,防止忘记

1.输出语句:document.write("");2.JS中的注释为//3.传统的HTML文档顺序是:document->html->(head,body)4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document)5.得到表单中元素的名称和值:document.getElementById(“表单中元素的ID号”).name(或value)6.一个小写转大写的JS: document.getEle
分类: 其他 发布时间: 03-26 10:27 阅读次数: 0

常用Javascript函数与原型功能收藏(必看)

// 重复字符串String.prototype.repeat = function(n) { return new Array(n+1).join(this);} // 替换全部String.prototype.replaceAll = function(str1, str2) { return this.replace(new RegExp(str1, "gm"), str2);} // 清除空格String.prototype.trim = function() { re
分类: 其他 发布时间: 03-26 10:27 阅读次数: 0

2021-02-28:给定一个整型数组arr,和一个整数num。某个arr中的子数组sub,如果想达标,必须满足:sub中最大值 – sub中最小值 <= num,返回arr中达标子数组的数量。

2021-02-28:给定一个整型数组arr,和一个整数num。某个arr中的子数组sub,如果想达标,必须满足:sub中最大值 – sub中最小值 <= num,返回arr中达标子数组的数量。福哥答案2021-02-28:采用两个双端队列,存序号。maxWindow从大到小,minWindow从小到大。1.两个双端队列同时右扩。当最大值-最小值大于sum,退出循环。2.计数。3.删除双端队列左边的过期序号。有代码。代码用golang编写,代码如下:package mainimpo
分类: 其他 发布时间: 03-26 10:27 阅读次数: 0

2021-03-03:一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲。给你每一个项目开始的时间和结束的时间 。你来安排宣讲的日程,要求会议室进行的宣讲的场次最多。 返回最多的宣讲场次。

2021-03-03:一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲。给你每一个项目开始的时间和结束的时间 。你来安排宣讲的日程,要求会议室进行的宣讲的场次最多。 返回最多的宣讲场次。福哥答案2021-03-03:贪心算法。1.按结束时间排序。2.for循环中,当前时间点小于会议的开始时间点,需要计数。当前时间点变成会议的结束时间点。代码用golang编写,代码如下:package mainimport ( "fmt" "sort")func main(
分类: 其他 发布时间: 03-26 10:27 阅读次数: 0

2021-03-04:一块金条切成两半,是需要花费和长度数值一样的铜板的。比如长度为20的金条,不管怎么切,都要花费20个铜板。 一群人想整分整块金条,怎么分最省铜板? 例如,给定数组{10,20,3

2021-03-04:一块金条切成两半,是需要花费和长度数值一样的铜板的。比如长度为20的金条,不管怎么切,都要花费20个铜板。 一群人想整分整块金条,怎么分最省铜板? 例如,给定数组{10,20,30},代表一共三个人,整块金条长度为60,金条要分成10,20,30三个部分。如果先把长度60的金条分成10和50,花费60; 再把长度50的金条分成20和30,花费50;一共花费110铜板。但如果先把长度60的金条分成30和30,花费60;再把长度30金条分成10和20, 花费30;一共花费90铜板。输入一个
分类: 其他 发布时间: 03-26 10:27 阅读次数: 0

2021-03-05:go中,io密集型的应用,比如有很多文件io,磁盘io,网络io,调大GOMAXPROCS,会不会对性能有帮助?为什么?

2021-03-05:go中,io密集型的应用,比如有很多文件io,磁盘io,网络io,调大GOMAXPROCS,会不会对性能有帮助?为什么?福哥答案2021-03-05:这是面试中被问到的。实力有限,真正的答案还不知道。答案1:调节这个参数影响的是P的个数,也就影响了M(线程)干活的个数。相当于你可以有更多的执行线程。先以网络io来说,网络io 在golang 里面是异步的,用epoll池做的io复用。每个网络调用其实都是异步的,发数据给到内存,调度权就可以让给其他goroutine了,所以,其
分类: 其他 发布时间: 03-26 10:27 阅读次数: 0

2021-03-07:在一个数组中,对于每个数num,求有多少个后面的数 * 2 依然<num,求总个数。比如:[3,1,7,0,2],3的后面有:1,0;1的后面有:0;7的后面有:0,2;0的后面

2021-03-07:在一个数组中,对于每个数num,求有多少个后面的数 * 2 依然<num,求总个数。比如:[3,1,7,0,2],3的后面有:1,0;1的后面有:0;7的后面有:0,2;0的后面没有;2的后面没有;所以总共有5个。福哥答案2021-03-07:归并排序模板。有代码。代码用golang编写,代码如下:package mainimport "fmt"func main() { arr := []int{3, 1, 7, 0, 2} ret := Big
分类: 其他 发布时间: 03-26 10:27 阅读次数: 0

2021-03-08:在一个数组中,任何一个前面的数a,和任何一个后面的数b,如果(a,b)是降序的,就称为逆序对。返回逆序对个数。

2021-03-08:在一个数组中,任何一个前面的数a,和任何一个后面的数b,如果(a,b)是降序的,就称为逆序对。返回逆序对个数。福哥答案2021-03-08:1.归并排序,从右往左,相等拷右。有代码。2.归并排序模板。有代码。代码用golang编写,代码如下:package mainimport "fmt"func main() { if true { arr := []int{3, 1, 7, 0, 2} ret := reverPairNum
分类: 其他 发布时间: 03-26 10:27 阅读次数: 0

2021-03-09:在一个数组中,一个数左边比它小的数的总和,叫数的小和,所有数的小和累加起来,叫数组小和。求数组小和。 例子: [1,3,4,2,5],1左边比1小的数:没有,3左边比3小的数:1

2021-03-09:在一个数组中,一个数左边比它小的数的总和,叫数的小和,所有数的小和累加起来,叫数组小和。求数组小和。例子: [1,3,4,2,5],1左边比1小的数:没有,3左边比3小的数:1,4左边比4小的数:1、3,2左边比2小的数:1,5左边比5小的数:1、3、4、 2,所以数组的小和为1+1+3+1+1+3+4+2=16 。福哥答案2021-03-09:1.归并排序,从左往右,相等拷右。有代码。2.归并排序模板。有代码。代码用golang编写,代码如下:package main
分类: 其他 发布时间: 03-26 10:27 阅读次数: 0

2021-03-10:一个数组上共有 N 个点,序号为0的点是起点位置,序号为N-1 的点是终点位置。现在需要依次的从 0 号点走到 N-1 号点。但是除了 0 号点和 N-1 号点,他可以在其余的

2021-03-10:一个数组上共有 N 个点,序号为0的点是起点位置,序号为N-1 的点是终点位置。现在需要依次的从 0 号点走到 N-1 号点。但是除了 0 号点和 N-1 号点,他可以在其余的 N-2 个位置中选出一个点,并直接将这个点忽略掉,问从起点到终点至少走多少距离?福哥答案2021-03-10:数组[1,4,-1,3],忽略序号1,数组变成[1,-1,3],距离是abs(-2)+4=6;忽略序号2,数组变成[1,4,3],距离是3+1=4。N-2 个坐标中选出一个点,并直接将这个点忽略掉
分类: 其他 发布时间: 03-26 10:27 阅读次数: 0

2021-03-11:go中,协程内部再启用协程,它们是没关系,对吧?外部协程奔溃,内部协程还会执行吗?外部协程执行结束的时候,如何让内部协程也停止运行?golang原生提供的包里,让内部协程停止运行

2021-03-11:go中,协程内部再启用协程,它们是没关系,对吧?外部协程奔溃,内部协程还会执行吗?外部协程执行结束的时候,如何让内部协程也停止运行?golang原生提供的包里,让内部协程停止运行,如何实现?福哥答案2021-03-11:1.外部协程和内部协程没关系。2.如果程序不奔溃,不会影响内部协程继续执行。如果没做特殊处理,整个程序会奔溃。3.三种方式:共享变量作为标志位,通道,上下文context。这三种方式均是协作式中断,不是抢占式。对于程序员,是无法实现抢占式中断的。如果能实现抢占
分类: 其他 发布时间: 03-26 10:27 阅读次数: 0

ES6的字符串中常用的知识总结

1. 字符串遍历ES6为字符串添加了遍历器接口,这样字符串就可以使用for…of循环遍历了而且还可以识别大于0xFFFF的码点,传统的for循环无法识别.for (let codePoint of 'foo') { console.log(codePoint)}//输出为:"f","o","o"2.模板字符串${}个人认为字符串中最好用的连接字符的方式.让我们不再为字符和变量之间的拼接而烦恼模板字符串(template string)是增强版的字符串,用反引号(`)标识(若字符串中需要表
分类: 其他 发布时间: 03-26 10:27 阅读次数: 0

2021-03-12:go中,如何确定有没有内存泄露,系统里怎么去监控整体的运行情况,日志是怎么处理的?

2021-03-12:go中,如何确定有没有内存泄露,系统里怎么去监控整体的运行情况,日志是怎么处理的?福哥答案2021-03-12:runtime/pprof:采集程序(非 Server)的运行数据进行分析。net/http/pprof:采集 HTTP Server 的运行时数据进行分析。日志用logrus,海量日志用kafka。这块不太熟,所以写的简单,实在抱歉。...
分类: 其他 发布时间: 03-26 10:26 阅读次数: 0

2021-03-15:手写代码:单链表选择排序。

2021-03-15:手写代码:单链表选择排序。福大大 答案2021-03-15:遍历链表,找出最小元素,链表里删除最小元素,最小元素放在需要返回的链表里。代码用golang编写,代码如下:package mainimport "fmt"func main() { //head := &ListNode{Val: 4} //head.Next = &ListNode{Val: 2} //head.Next.Next = &ListNode{Va
分类: 其他 发布时间: 03-26 10:26 阅读次数: 0

2021-03-16:手写代码:单链表归并排序。

2021-03-16:手写代码:单链表归并排序。福大大 答案2021-03-16:获取链表中点,然后按中点分成两个链表。递归两个链表。合并两个链表。代码用golang编写,代码如下:package mainimport "fmt"func main() { //head := &ListNode{Val: 4} //head.Next = &ListNode{Val: 2} //head.Next.Next = &ListNode{Val: 1
分类: 其他 发布时间: 03-26 10:26 阅读次数: 0

2021-03-18:给定一个字符串str,只由‘X’和‘.’两种字符构成。‘X’表示墙,不能放灯,也不需要点亮,‘.’表示居民点,可以放灯,需要点亮。如果灯放在i位置,可以让i-1,i和i+1三个位

2021-03-18:给定一个字符串str,只由‘X’和‘.’两种字符构成。‘X’表示墙,不能放灯,也不需要点亮,‘.’表示居民点,可以放灯,需要点亮。如果灯放在i位置,可以让i-1,i和i+1三个位置被点亮。返回如果点亮str中所有需要点亮的位置,至少需要几盏灯。福大大 答案2021-03-18:1.对连续的点计数cnt,然后累加(cnt+2)/3。2.贪心法。代码用golang编写,代码如下:package mainimport "fmt"func main() { str :
分类: 其他 发布时间: 03-26 10:26 阅读次数: 0

2021-03-19:给定一个二维数组matrix,其中的值不是0就是1,返回全部由1组成的最大子矩形,内部有多少个1。

2021-03-19:给定一个二维数组matrix,其中的值不是0就是1,返回全部由1组成的最大子矩形,内部有多少个1。福大大 答案2021-03-19:按行遍历二维数组,构造直方图。单调栈,大压小。有代码。代码用golang编写,代码如下:package mainimport "fmt"func main() { matrix := [][]byte{ {1, 1, 1}, {1, 0, 1}, {1, 1, 1},
分类: 其他 发布时间: 03-26 10:26 阅读次数: 0

javascript中数组的ES6新增常用的知识点

扩展运算符(…)含义:扩展运算符(spread)是三个点,可以看做是rest参数的逆运算,可以将一个数组转为用逗号分隔的参数序列.函数调用和数组合并()console.log(...[1, 2, 3])// 1 2 3console.log(1, ...[2, 3, 4], 5)// 1 2 3 4 5[...document.querySelectorAll('div')]let a=[1,2,3,4];let b=[9,8,7];let c=[...a,...b];//1 2 3
分类: 其他 发布时间: 03-26 10:26 阅读次数: 0