其实最简单的方法是“仿写”,比如234空,都可以直接仿写
当你完全不知道这种查找的算法的时候:
简单说说这题的算法:
朴素算法:每个去遍历,找到更大的则填入,没找到则=n + 1,模拟一遍即可。
优化算法:有没有什么办法能瞬间找到比一个数大的那个数在哪?其实很简单,只要让数列有序即可。那么就先预处理一遍数列{1,5,4,3,2} - > {1,2,3,4,5},当然,直接排序就会失去原先的位置信息,我们需要记录原先的位置,从题目中来看,值和位置信息都是1-n,则可以直接用索引作为P的值,数组的值作为位置信息a[x] = i(第一个for)。有了位置信息和排序后的P,用L、R来维护双链表的指针(第二个for)。下面只要对每次最小的值进行删除即可(第三个for),这里就不展开讲了,有兴趣可以去搜一下。全部处理完后的结果就是R(第四个for)