用Raptor子有序数组合并并算法

题目:有两个有序数组a,b,现需要将其合并成一个新的有序数组

简单的思路就是先放到一个新的数组中,再排序但是这样的没体现任何算法,这里考的不是快速排序等排序算法关键应该是如何利用 有序 已知这个条件。可以这样想假设两个源数组的长度不一样,那么假设其中短的数组用完了即全部放叺到新数组中去了,那么长数组中剩下的那一段就可以直接拿来放入到新数组中去了


测试结果如下图:1,是去重复的;2是不去重复的。


格式:DOC ? 页数:23页 ? 上传日期: 01:27:51 ? 浏览次数:1000? ? ? 2000积分 ? ? 用稻壳阅读器打开

全文阅读已结束如果下载本文需要使用

该用户还上传了这些文档

这题用暴力方法非常简单的


    

这个方法非常巧妙我们使用一个set来存储和余k后的余数。set[i]表示第i处之前的和余k后的余数于是如果在i之后有和余k之后等于这个set[i],那么就说明有連续子数组的和可以整除k因为这说明中间差值是可以被k整除的。


    

这里cache的使用非常巧妙因为题目限制子数组长度必须大于等于2,所以先將值存入cache然后下个循环再进行判断,满足每次判断时子数组长度都是大于2的。

我要回帖

更多关于 有序数组合并 的文章

 

随机推荐