算法

[LeetCode OJ]- Merge Two Sorted

2017-03-21  本文已影响0人  其中一个cc

题目要求:给定两个已排序的数组nums1【】和nums2【】,将两个数组合并到nums1【】中,合并前,nums1中有m个数,nums2中有n个数,合并后nums1的长度为m+n。

思路:使用三个指针,idx1指向nums1,idx2指向nums2,idx指向合并后的nums1.

idx1和idx2都从数组的尾部开始向前指,比较idx1指向的值跟idx2指向的值的大小,将较大的数赋给idx所指向的位置,并且idx--,直到所有的idx1和idx2中有一个先指到数组头

这时,如果idx1指向表头,idx2没指到表头,说明nums2中还有更小的数没有插入nums1中,此时循环插入就可以;若idx2指向表头,idx1没有指到表头,说明此时较小的数就在没指到的nums1的前部分,直接返回nums1即可。

初始状态 中间状态1 中间状态2

代码如下。

另外, 这个问题跟合并两个已排序的链表问题很像,欢迎学习。

上一篇下一篇

猜你喜欢

热点阅读