77 lines
1.8 KiB
Markdown
77 lines
1.8 KiB
Markdown
## 题目二
|
|
给定一个数组arr,长度为N>1
|
|
从中间切一刀,保证左部分和有部分都有数字,一共有N-1种切法
|
|
如此多的切法中,每一种都有:
|
|
绝对值(左部分最大值-右部分最大值)
|
|
返回最大值的绝对值是多少
|
|
方法一
|
|
创建两个辅助数组,一个从左往右记录最大值,一个从右往左记录最大值
|
|
两个数组一一对应相减
|
|
方法二
|
|
找出最大值-min(最左,最右)
|
|
|
|
子数组连续的几个,子序列可不连续的.
|
|
|
|
## 题目三
|
|
定义什么事可整合数组
|
|
一个数组排完序之后,除了最左侧的数外,有arr[i]=arr[i-1]+1
|
|
则称这个数组为可整合数组
|
|
比如{5,1,2,4,3};{6,2,3,1,5,4}都是可整合数组
|
|
返回arr中最长可整合数组的长度.
|
|
1) 无重复
|
|
2) max-min=n-1
|
|
|
|
## 题目四
|
|
超级水王问题,某个数组中某个数字个数超过一半.
|
|
一次删掉两个不同的数,如果有水王则剩下的一定是水王.
|
|
遍历剩下的数,看个数是否超过一半.
|
|
定义两个数:候选,血量.(同时删除两个)
|
|
|
|
扩展1.摩尔投票
|
|
某个数大于N/k次打印,候选k-1
|
|
扩展2.给定一个正数k,返回所有出现次数>N/k的数
|
|
|
|
|
|
arr[l..r]一定要整出k份,合并的最小代价, 返回.
|
|
|
|
## 题目五
|
|
https://leetcode.cn/problems/minimum-cost-to-merge-stones/
|
|
总是多想,立足当下.
|
|
## 题目一
|
|
给定数组father大小为N,表示一共有N个节点
|
|
father[i]=j表示点i的父亲是点j,father表示的树一定是一棵树而不是森林
|
|
queries是二维数组,大小为M*2,每一个长度为2的数组都表示一个查询[4,9],
|
|
表示想查询4和9之间的最低公共祖先
|
|
[3,7]表示想查询3和7之间的最低公共祖先...
|
|
tree和queries里面的所有值,都一定在0到n-1之间
|
|
返回一个数组ans,大小为m,ans[i]表示第i条查询的答案.
|
|
|
|
|
|
树链抛分,21节
|
|
|
|
难得东西在,年轻的时候学些
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|