32 lines
1.4 KiB
Markdown
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个逆序对 |