-
2021-02-26:一个数组arr是二叉树的中序遍历结果,每条边的开销是父节点和子节点的乘积,总开销是所有边的开销之和。请问最小总开销是多少?链接:https://www.nowcoder.com/questionTerminal/0d939e874a004f449a370aca1346dd5c来源:牛客网小团有一个由N个节点组成的二叉树,每个节点有一个权值。定义二叉树每条边的开销为其两端节点权
-
2021-02-25:给定一个正数数组arr,请把arr中所有的数分成两个集合。如果arr长度为偶数,两个集合包含数的个数要一样多;如果arr长度为奇数,两个集合包含数的个数必须只差一个。请尽量让两个集合的累加和接近,返回最接近的情况下,较小集合的累加和。福哥答案2020-02-25:自然智慧即可。1.递归。有代码。2.动态规划。dp是三维数组。有代码。代码用golang编写,代码如下:packa
-
福哥答案2020-02-24:自然智慧即可。1.递归。有代码。2.动态规划。dp是二维数组。有代码。代码用golang编写,代码如下:packagemainimport("fmt")funcmain(){arr:=[]int{1,2,3}aim:=8ret:=minCoins1(arr,aim)fmt.Println("1.递归:",ret)ret=minCoins2(arr,aim)fmt.Pr
-
2021-02-23:给定一个正数n,求n的裂开方法数。规定:后面的数不能比前面的数小。比如4的裂开方法有:1+1+1+1、1+1+2、1+3、2+2、4,5种,所以返回5。福哥答案2021-02-23:自然智慧即可。1.递归。有代码。2.动态规划。dp是二维数组。有代码。3.动态规划,空间压缩。两个一维数组搞定。有代码。代码用golang编写,代码如下:packagemainimport"fmt
-
2021-02-22:一个象棋的棋盘,然后把整个棋盘放入第一象限,棋盘的最左下角是(0,0)位置,那么整个棋盘就是横坐标上9条线、纵坐标上10条线的区域。给你三个参数x,y,k。返回“马”从(0,0)位置出发,必须走k步。最后落在(x,y)上的方法数有多少种?福哥答案2021-02-22:自然智慧即可。1.递归。有代码。2.记忆化搜索。有代码。3.动态规划。dp是三维数组。棋盘是二维数组,走k步,
-
2021-02-21:手写代码:高性能路由,也就是一个字符串和多个匹配串进行模糊匹配。一个数组arr里是["a","moonfdd"],字符串"moonfdd"能匹配到,理由是arr里有。字符串"xayy"也能匹配到,理由是arr里的"a",第1个星对应"x",第2个星对应&qu
-
福哥答案2021-02-20:四大方法:读加锁,读解锁,写加锁,写解锁。读加锁里有写加锁,读解锁里有写解锁。代码有写线程饥饿现象,但实现简单。代码用golang编写,代码如下:packagemainimport("fmt""sync""time")funcmain(){fdd:=FddRWMutex{}gofunc(){i:=0fork:=0;k<5;k++{gofunc(){j:=ii++
-
2021-02-19:给定一个二维数组matrix,一个人必须从左上角出发,最后到达右下角。沿途只可以向下或者向右走,沿途的数字都累加就是距离累加和。请问最小距离累加和是多少?福哥答案2021-02-19:自然智慧即可。一般会考虑dp[i][j]的右边和下边,谁小选谁,虽然你能确定下一步是最小值,但是下一步的以后就不一定是最小值了,不是路径最优。逆向思维,dp[i][j]的左边和上边,谁小选谁,左
-
2021-02-18:给定一个字符串str,给定一个字符串类型的数组arr,出现的字符都是小写英文。arr每一个字符串,代表一张贴纸,你可以把单个字符剪开使用,目的是拼出str来。返回需要至少多少张贴纸可以完成这个任务。例子:str="babac",arr={"ba","c","abcd"}。a+ba+c3abcd+a
-
2021-02-17:规定1和A对应、2和B对应、3和C对应...26和Z对应,那么一个数字字符串比如"111”就可以转化为:"AAA"、"KA"和"AK"。给定一个只有数字字符组成的字符串str,请问有多少种转化结果?福哥答案2021-02-17:自然智慧即可。1.递归。有代码。2.动态规划。有代码。代码用golang编写,代
-
福哥答案2021-02-16:自然智慧即可。1.普通递归。有代码。需要判断同列和斜线。2.位运算递归。有代码。3.我的递归。有代码。只需要判断斜线。代码用golang编写,代码如下:packagemainimport("fmt""time")funcmain(){n:=12fmt.Println(n,"皇后问题")fmt.Println("------")now:=time.Now()fmt.Pr
-
2021-02-15:给定一个整型数组arr,代表数值不同的纸牌排成一条线。玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿。但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪明。请返回最后获胜者的分数。福哥答案2021-02-15:这道题直接背,用自然智慧很难想到,平时需要锻炼敏感度。1.递归。有代码。先手依赖后手递归加数组元素的最大值。后手依赖先手递归的最小值。为了方便
-
QQ空间:https://user.qzone.qq.com/3182319461/blog/1592432946新浪微博:https://weibo.com/p/1005057462146952/home?from=page_100505_profile&wvr=6&mod=data&is_all=1&display=0&retcode=6102CSDN: