合并两个有序数组
1.介绍
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。
说明:
- 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。
- 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
示例:
输入: nums1 = [1,2,3,0,0,0], m = 3 nums2 = [2,5,6], n = 3 输出: [1,2,2,3,5,6]
2.解决思想
1.建立一个新数组,然后把两个有序数组中的数字存放到新数组中
2.遍历新数组,替换nums1中的值
3.代码
代码是参考了一些其他大佬的思想,然后想出来的代码,代码的优化是我很满意的,看起来特别简洁。(四个条件判断其实主要分两种类型:判断两个数组中是否有为空的,和不为空的时候判断大小的)其实问题解决是很简单的,本来不打算上传上去的,但是看到最后被优化后的简洁的代码,还是觉得可以和大家分享下。
public static void merge(int[] nums1, int m, int[] nums2, int n) { int[] ints = new int[m + n]; int i = 0, j = 0, k = 0; while (i < m || j < n) { if (j >= n) ints[k++] = nums1[i++]; else if (i >= m) ints[k++] = nums2[j++]; else if (nums1[i] < nums2[j]) ints[k++] = nums1[i++]; else if (nums1[i] >= nums2[j]) ints[k++] = nums2[j++]; } while (k-- > 0) nums1[k] = ints[k]; }
------------------------------------------------------------------------------------------------------------------------------------------------- 觉得我的博客有用的,请顶下我的文章并关注我,让更多的人能看到我写的博客,谢谢。-------------------------------------------------------------------------------------------------------------------------------------------------
网上的答案很多,但是怎么说呢,太多都是那种复制粘贴的答案,有些都是运行不了的。我写博客的原因主要是为了分享我的学习过程,帮助大家,同时也让其他人检查我的答案。太过简单的博客我就不写了,浪费彼此时间。
首先我保证,我的代码都是自己运行过的,如果是同样的java1.7是不会有问题。
其次,我的代码都是写清楚了解决思想的,便于大家理解。
我写代码主要是看中可读性,太过复杂的代码,在我看来是很扯淡的。代码的可读性很重要,尤其是在项目中,一个项目的代码如果需要他人阅读半天才能理解,那么这个项目会越来越难处理。

浙公网安备 33010602011771号