public class Solution {
public void Merge(int[] nums1, int m, int[] nums2, int n) {
//for (int i = 0; i < n; i++)
//{
//nums1[m++] = nums2[i];
//} //nums1 = nums1.OrderBy(x => x).ToArray();
int i = m - ;
int j = n - ;
int k = m + n - ;
while (i >= && j >= )
{
if (nums1[i] > nums2[j])
{
nums1[k--] = nums1[i--];
}
else
{
nums1[k--] = nums2[j--];
}
}
while (j >= )
{
nums1[k--] = nums2[j--];
}
}
}

https://leetcode.com/problems/merge-sorted-array/#/description

补充一个java的实现:

 public class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int index1 = m - , index2 = n - ;
int indexMerge = m + n - ;
while (index1 >= || index2 >= ) {
if (index1 < ) {
nums1[indexMerge--] = nums2[index2--];
} else if (index2 < ) {
nums1[indexMerge--] = nums1[index1--];
} else if (nums1[index1] > nums2[index2]) {
nums1[indexMerge--] = nums1[index1--];
} else {
nums1[indexMerge--] = nums2[index2--];
}
}
}
}

主要思想是使用双指针。两个数组都从后向前遍历,比较两个数组中的值,大的插入到nums1的末尾。

如果一个数组已经遍历完了,那么就把另一个数组剩余元素按照倒叙,依次插入(更新)nums1。

补充一个python的实现:

 class Solution:
def merge(self, nums1: 'List[int]', m: int, nums2: 'List[int]', n: int) -> None:
"""
Do not return anything, modify nums1 in-place instead.
"""
i,j,k = m-,n-,m+n- while i >= and j >= :
if nums1[i] < nums2[j]:
nums1[k] = nums2[j]
k -=
j -=
elif nums1[i] > nums2[j]:
nums1[k] = nums1[i]
k -=
i -=
else:
nums1[k] = nums1[i]
k -=
i -=
while j >= :
nums1[k] = nums2[j]
k -=
j -=
return nums1

leetcode88的更多相关文章

  1. [Swift]LeetCode88. 合并两个有序数组 | Merge Sorted Array

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

  2. 面试题:合并2个有序数组(leetcode88)

    给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n. ...

  3. 【leetcode-88,21】 合并两个有序数组/链表

    合并两个有序数组 (easy,1过) 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nu ...

  4. LeetCode88.合并两个有序数组

    给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n. ...

  5. leetcode88—Merge Sorted Array

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

  6. leetcode88 Merged Sorted Array

    题意:两个已排好序的数组,合并成新的数组. 解题思路:刚开始做题,完全找不到思路,想用最简单的插入法做,提示超时了大概是for用多了哈哈··看了下别人的方法果断佩服,利用好已排序这个特点,从后往前添加 ...

  7. leetcode-88合并两个有序数组

    合并两个有序数组 思路:利用索引合并两个列表,排序.注意不需要返回值,只修改nums1 class Solution: def merge(self, nums1: List[int], m: int ...

  8. leetcode-88. 合并两个有序数组 · Aaray

    题面 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 样例 1. 输入: nums1 = [1,2,3,0,0,0], m ...

  9. 菜鸟刷题路(随缘刷题):leetcode88

    lc88 class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int i = m - 1, j = ...

随机推荐

  1. poj1459网络流之多源点最大流

    这题想了好久,一直认为应该bfs更新后求最小值把发电站最大发电加进去,但是又发现这样求增广路的时候会导致用户更新出错, 加源点和汇点也考虑到了,没想到居然发电量就是超级源到源点的v,居然这么简单@.@ ...

  2. UVA-806 Spatial Structures (四分树)

    题目大意:将一块图像上的黑点在两种表示法之间转换. 题目分析:递归下去... 注意:输出时要注意细节!!! 代码如下: # include<iostream> # include<c ...

  3. css中的f弹性盒子模型的应用案例

    案例1: <!doctype html> <html> <head> <meta charset="utf-8"> <meta ...

  4. 蓝桥杯练习系统历届试题 剪格子 dfs

    问题描述 如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+|10* 1|52|+--****--+|20|30* 1|*******--+| 1| 2| 3|+--+--+--+ ...

  5. Cache应用/任务Mutex,用于高并发任务处理经过多个项目使用

    <?php /** * Class Cache redis 用于报表的缓存基本存储和读写 2.0 * <pre> * Cache::read("diamond.accoun ...

  6. linux centos 虚拟机新安装后没有网络

    ping的时候出现 name or service not known的时候 可以 修改/etc/sysconfig/network-scripts/ifcfg-ens33 文件 vi ifcfg-e ...

  7. Java中,什么时候用logger.debuge,info,error

    简单的说,就是配合log的等级过滤输出比如,你在开发的时候,要验证一个方法有没有被调用到,为了方便调试,通常会在这个方法开始的时候加一些system.out.但是项目真正发布的时候这些代码通常是要移除 ...

  8. WPF 中的 NameScope

    我们在 WPF 中使用绑定时可以使用 ElementName=Foo 这样的写法,并且还能够真的在运行时找到这个名称对应的对象,是因为 WPF 中提供了名称范围概念. 实现 INameScope 接口 ...

  9. PTA编程总

    7-1 币值转换 (20 分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成“贰万叁仟壹百零捌”元.为了简化输出,用小写英文字 ...

  10. 【C#】App_LocalResources实现多语言

    介绍 如果您创建的网页将由使用不同语言的用户阅读,则必须为这些读者提供用他们自己的语言查看网页的方法.一种方法是分别用各语言重新创建页面,但这种方法可能需要大量工作量.容易出错并且在更改原始页时很难维 ...