algorithm/算法/learn/大厂刷题/Sixteen.md

32 lines
1.4 KiB
Markdown

## 题目一
给定一个有正,有负,有0的数组arr,
给定一个整数k,
返回arr的子集是否能累加出k
1) 正常怎么做;经典动态规划,行作为数类作为值判断是否包含某个数,由于含有负数,因此采用平移的方式-n=>0 0->n
2) 如果arr中的数值很大,但是arr的长度不大,怎么做;分治,经典动态规划太废表
## 题目二
给定一个整数数组arr,
返回arr的子集不能累加出的最小正数
1) 正常怎么做
2) 如果arr中肯定有1这个值,怎么做.
## 题目五
约瑟夫环问题
给定一个链表头节点head,和一个正数m
从头开始,每次数到m就杀死当前节点
然后被杀节点的下一个节点从1开始重新数,
周而复始知道只剩一个节点,返回最后的节点
暴力O(n*m)
## 题目六
给定正数power,给定一个数组arr,给定一个数组reverse
含义如下:
arr长度一定是2的power次方
reverse中的每个值一定都在0~power范围.
例如power=2,arr={3,1,4,2},reverse={0,1,0,2}
任何一个在前的数字可以和任何一个在后的数组,构成一对数
可能是升序关系/相等关系或者降序关系
比如arr开始时有如下的降序对:(3,1)(3,2)(4,2),一共3个
接下来根据reverse对arr进行调整:
reverse[0]=0,表示在arr中,划分每1(2的0次方)个数一组然后每个
小组内部逆序,那么arr变为[1,3,2,4],此时有3个逆序对