88. 合并两个有序数组

88. 合并两个有序数组

  • 原题链接:
  • 完成情况:
  • 解题思路:
  • 参考代码:

原题链接:

88. 合并两个有序数组

https://leetcode.cn/problems/merge-sorted-array/description/

完成情况:

88. 合并两个有序数组_第1张图片

解题思路:

 /**
     巧妙运用排序即可,主要分正向排序,还有反向排序
     两者的区别就在于,正向排序的话,需要一个临时变量,避免元素直接覆盖‘
     反向排序的话,就需要temp,a,b三者的交换
     */

参考代码:

package LeetCode中等题02;

public class __88合并两个有序数组 {
    /**
     *
     * @param nums1
     * @param m
     * @param nums2
     * @param n
     */
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        /**
         巧妙运用排序即可,主要分正向排序,还有反向排序
         两者的区别就在于,正向排序的话,需要一个临时变量,避免元素直接覆盖‘
         反向排序的话,就需要temp,a,b三者的交换
         */
        int p1  = 0,p2 = 0;
        int sorted [] = new int[m+n];
        int cur ;
        while (p1 < m || p2 < n){
            if (p1 == m){
                cur = nums2[p2++];
            } else if (p2 == n) {
                cur = nums1[p1++];
            } else if (nums1[p1] < nums2[p2]) {
                cur = nums1[p1++];
            }else {
                cur = nums2[p2++];
            }
            sorted[p1 + p2 - 1] = cur;
        }
        for (int i=0;i != m + n;++i){
            nums1[i] = sorted[i];
        }
    }
}

你可能感兴趣的:(算法知识,#,LeetCode题解,java学习,大数据,人工智能,数据挖掘,算法,java,算法算法)