algorithm/算法/learn/大厂刷题/twenty/Twenty-three.md

77 lines
1.8 KiB
Markdown
Raw Normal View History

2024-09-22 00:12:21 -04:00
## 题目二
给定一个数组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节
难得东西在,年轻的时候学些