LeetCode(40)-Merge Sorted Array

听到初爱有感

开头啰嗦两句。刚在做算法题目的时候。听到了杨宗纬的《初爱》,突然有了一种本科时候的感觉,想想自己如今研二了,青春喂了狗,我果断喝了一罐啤酒,循环这首歌到吐…..

题目:

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.

Note:
You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1 and nums2 are m and n respectively.

思路:

  • 题意是如果数组nums1里面m个元素,nums2有n个元素,nums1的大小是m+n,两个数组都是有序的,要求把nums2。放到nums1里面
  • 充分利用两个数组都是有序的这个条件,不断推断nums1和nums2和最后一个元素,谁大,就把它拷贝到nums1的最后一个,同一时候对应的指针减一 -

代码:

public class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        if(n == 0)return;
        int all = m+n-1;
        m--;
        n--;
        while(m >=0 && n >=0){
            nums1[all--] = nums1[m] > nums2[n] ? nums1[m--]:nums2[n--];
        }
        while(n >= 0){
            nums1[all--] = nums2[n--];
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值