LeetCode Merge Sorted Array 合并已排序的数组
void merge(int A[], int m, int B[], int n) {
int *a=A,*b=B;
int i=,j=;
if(n==||m==){ //针对特殊情况,比如A或B中无元素的情况
if(n==&&m!=||n==&&m==)
return;
else
for(i=;i<n;i++)
A[i]=B[i];
return;
}
do{
while(*b>=*a&&i<m){
a++;
i++; // i记录A中要插入的位置
}
for(j=m;j>i;j--) //A中从第i个开始往后移动一位
A[j]=A[j-];
*a=*b;
m++; //每循环一次,A中元素增加一个
b++; //b指针往后取元素
n--;
a++; //a指针也往后移一位,指向刚插进去的元素的后一个元素
i++;
}while(n>);
return;
}
题意:将两个有序的数组(升序)合并为一个有序的数组(升序),将合并后的数组存储在A中。
注意:要考虑数组A或B中可能没有元素的情况。以数组作为实参传给形参传的是地址,所以在这个函数中操作数组A和B是直接对数组的直接操作,而m和n就只是盏中的一个实参副本,可随便改。
思路:把B中的元素从小到大逐个取出来,插入到A中去,要将合适位置后面的所有元素往后移一位。几乎每插一个进A都要移动A中的元素,除非特殊情况,如B中的最小元素比A中的最大元素要大,那么就不需要移动了。这个算法的效率还是不怎样的,应该有更好的算法,只是这个挺简洁的了。
LeetCode Merge Sorted Array 合并已排序的数组的更多相关文章
- [Leetcode] merge sorted array 合并数组
Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may assume th ...
- LeetCode 088 Merge Sorted Array 合并两个有序数组
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.Note:You ...
- [Leetcode] Remove duplicates from sorted array 从已排序的数组中删除重复元素
Given a sorted array, remove the duplicates in place such that each element appear only once and ret ...
- 【LeetCode】Merge Sorted Array(合并两个有序数组)
这道题是LeetCode里的第88道题. 题目描述: 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nu ...
- 【easy】88. Merge Sorted Array 合并两个有序数组
合并两个有序的list 把排序好的nums2插入nums1中,假设nums1这个vector的空间永远是够的 思路:倒序!! class Solution { public: void merge(v ...
- 088 Merge Sorted Array 合并两个有序数组
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1中,使得 num1 成为一个有序数组.注意:你可以假设 nums1有足够的空间(空间大小大于或等于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 tha ...
- [LeetCode] 88. Merge Sorted Array 合并有序数组
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: T ...
- Merge Sorted Array 合并数组并排序
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:Yo ...
随机推荐
- Unity中限制轴向移动范围Mathf.Clamp
Mathf.Clamp 在游戏中,为了限制玩家的某一轴向的移动不超过一定的范围,可以用Mathf.Clamp来解决 Mathf.Clamp(float value,float min,float ...
- sqlalchemy字段与mysql数据库字段对应问题
字段类型是在定义模型时, 对每个 Column 的类型约定. 不同类型的字段类型在输入输出上, 及支持的操作方面, 有所区别. 这里只介绍 sqlalchemy.types.* 中的类型, SQL 标 ...
- Linux基础学习(一)
前言:这个学习笔记是为了督促自己能够更好的学习Linux的有关知识. 参考书目 鸟哥的linux私房菜 Chapter 1:入门建议 新手建议:重点 基础一定一定要学好 那么什么是基础呢? 先从Lin ...
- 为什么要把系统拆分成分布式的,为啥要用Dubbo?
阅读本文大概需要 6 分钟. 作者:yanglbme 1.面试题 为什么要进行系统拆分?如何进行系统拆分?拆分后不用 dubbo 可以吗? 2.面试官心里分析 从这个问题开始就进行分布式系统环节了,好 ...
- click点击事件先后顺序的问题
//页面加载时,每秒钟调用一次var times = setInterval("loadFlws()","1000"); function loadFlws() ...
- IO模式和IO多路复用详解
网络编程里常听到阻塞IO.非阻塞IO.同步IO.异步IO等概念,总听别人装13不如自己下来钻研一下.不过,搞清楚这些概念之前,还得先回顾一些基础的概念. 1 基础知识回顾 注意:咱们下面说的都是Lin ...
- [Leetcode]005. Longest Palindromic Substring
public String longestPalindrome(String s) { int start = 0, end = 0; for (int i = 0; i < s.length( ...
- HDU-2588-GCD (欧拉函数)
The greatest common divisor GCD(a,b) of two positive integers a and b,sometimes written (a,b),is the ...
- Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件
一.Django与Ajax AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻 ...
- Maven_setting.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Soft ...