合并两个有序数组

题目:https://leetcode.cn/problems/merge-sorted-array/

  1. 两个数组是有序的,存在一个大数组 nums1、一个小数组 nums2。
  2. 将大数组 nums1中,有序的那部分元素 copy 出来,记为 nums1copy,采用双指针移动法,一个指针指向 nums1copy,另一个指针指向 nums2
  3. 哪个指针指向的元素小,就将该元素复制到原来的大数组 nums1

代码:

public class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int[] nums1copy = new int[m];
        System.arraycopy(nums1, 0, nums1copy, 0, m);
        //nums1copy 和 nums2 数组都是有序的
        int i, j, k;
        i = j = k = 0;
        while (i < nums1copy.length && j < nums2.length) {
            if (nums1copy[i] < nums2[j]) {
                nums1[k++] = nums1copy[i++];
            }else {
                nums1[k++] = nums2[j++];
            }
        }

        while (i < nums1copy.length) {
            nums1[k++] = nums1copy[i++];
        }

        while (j < nums2.length) {
            nums1[k++] = nums2[j++];
        }
    }
}
posted @   大熊猫同学  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
历史上的今天:
2016-08-21 阻塞通信之Socket编程
2015-08-21 分布式系统概念--第一篇 一致性协议、一致性模型、拜占庭问题、租约、副本协议
点击右上角即可分享
微信分享提示