leetcode第88题-Merge Sorted Array

题目的意思:合并两个有序的数组到第一个数组中,使合并之后的数组仍然有序,且假设第一个数组有足够的空间。

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

#include<stdio.h>
#include<stdlib.h>

void merge(int A[], int m, int B[], int n)
{
    int i=0,j=0;
	while(m&&n)
	{
		if(A[m-1]>B[n-1])
		{
			A[m+n-1]=A[m-1];
			m--;
		}
		else
		{
			A[m+n-1]=B[n-1];
			n--;
		}
	}
	while(n)
	{
		A[n-1]=B[n-1];
		n--;
	}
}

int main()
{
	int m,n,i;
	while(scanf("%d %d",&m,&n)!=EOF)
	{
		int *a=(int *)malloc(sizeof(int)*(m+n));
		int *b=(int *)malloc(sizeof(int)*n);
		for(i=0;i<m;i++)
			scanf("%d",&a[i]);
		for(i=0;i<n;i++)
			scanf("%d",&b[i]);
		for(i=m;i<m+n;i++)
			a[i]=0;
		merge(a,m,b,n);
		for(i=0;i<m+n;i++)
			printf("%d ",a[i]);
		printf("\n");
	}
	return 0;
}
时间: 2024-10-05 08:33:21

leetcode第88题-Merge Sorted Array的相关文章

[LC]88题 Merge Sorted Array (合并两个有序数组 )

①英文题目 Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: The number of elements initialized in nums1 and nums2 are m and n respectively.You may assume that nums1 has enough space (size that is greater o

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(88)题解-- Merge Sorted Array

https://leetcode.com/problems/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 additi

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 init

leetcode || 88、Merge Sorted Array

problem: 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 an

第十二题 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 are m

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 g

LeetCode算法题-Merge Sorted Array(Java实现)

这是悦乐书的第161次更新,第163篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第20题(顺位题号是88).给定两个排序的整数数组nums1和nums2,将nums2中的元素合并到nums1中,并且作为一个排序的数组.在nums1和nums2中初始化的元素个数分别为m和n.假设nums1有足够的空间(大于或等于m + n)来保存nums2中的其他元素.例如: 输入:nums1 = [1,2,3,0,0,0],m = 3,nums2 = [2,5,6],n = 3

leetcode学习笔记:Merge Sorted Array

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