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--];
        }
    }
}

原文地址:https://www.cnblogs.com/llguanli/p/8947425.html

时间: 2024-08-29 21:47:36

LeetCode(40)-Merge Sorted Array的相关文章

LeetCode(88)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 i

【leetcode?python】 88. Merge Sorted Array

class Solution(object):    def merge(self, nums1, m, nums2, n):        """        :type nums1: List[int]        :type m: int        :type nums2: List[int]        :type n: int        :rtype: void Do not return anything, modify nums1 in-place

leetcode学习笔记:Merge Sorted Array

一.题目描述 二.解题技巧 这道题不存在复杂的分析过程和边界条件.如果单纯得考虑从小到大地将两个数组进行合并的话,每次在num1中插入一个数的话,需要将后面的元素都向后移动一位,这样,整个处理过程的时间复杂度为O(m*n). 由于两个数组的元素的个数是知道的,同时,合并后的数组也是递增排序的,也就是说,排序之后的数组的最大值是放在最后面的,因此,我们可以从后往前遍历,也就是将最大值放在第一个数组的m+n-1位置,然后将次最大值放在m+n-2位置,依次类推,这样在将元素放置到合适位置的时候,就不需

leetcode第88题-Merge Sorted Array

题目的意思:合并两个有序的数组到第一个数组中,使合并之后的数组仍然有序,且假设第一个数组有足够的空间. 解题思路:一开始遇到这个题目,我也是不顾一切的从头开始遍历,结果很麻烦,总是有一两个位置走不对,数组并不像链表那样插入一个节点这么简单,我们要解决的就是插入节点的位置问题.所幸,上网查了一下其他人的做法,突然想到了可以从后往前遍历,因为每个数组都是有序的,比较两个数组的最后一个位置的元素大小就可以确定该元素的最终位置,最后就利用这个想法AC了这道题. #include<stdio.h> #i

【LeetCode 88_数组】Merge Sorted Array

1 void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) 2 { 3 int i = m - 1; 4 int j = n - 1; 5 int k = m + n - 1; 6 while (i >=0 && j >= 0) { 7 if (nums1[i] > nums2[j]) 8 nums1[k--] = nums1[i--]; 9 else 10

归并有序数组--Merge Sorted Array

https://leetcode.com/problems/merge-sorted-array/ 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)

leetcode 题解:Merge Sorted Array(两个已排序数组归并)

题目: Given two sorted integer arrays A and B, merge B into A as one sorted array. Note:You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B ar

[LeetCode] Merge Sorted Array [22]

题目 Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B ar

88. Merge Sorted Array【leetcode】算法,java将两个有序数组合并到一个数组中

88. 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 n