[LeetCode]Merge Sorted Array 合并排序数组

简介: 链接:https://leetcode.com/problems/merge-sorted-array/description/难度:Easy题目:88.

链接https://leetcode.com/problems/merge-sorted-array/description/
难度:Easy
题目: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 initialized in nums1 and nums2 are m and n respectively.

翻译:给定两个排序整数数组nums1和nums2,将nums2按顺序合并到nums1(从小到大)。
提示:假设nums1有足够的空间(大小大于或等于m + n)来保存nums2中的其他元素。

思路:A和B都已经是排好序的数组,我们只需要从后往前比较就可以了。因为A有足够的空间容纳A + B,我们使用游标i指向m + n - 1,也就是最大数值存放的地方,从后往前遍历A,B,谁大就放到i这里,同时递减i。

参考代码
Java

class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        for(int i=m + n - 1; i>=0 ; i--){
            if(m>0 && n>0){
                if(nums1[m-1]>nums2[n-1]){
                    nums1[i] = nums1[m-1];
                    m --;
                }else{
                    nums1[i] = nums2[n-1];
                    n --;
                }
            }else if(m<=0){
                nums1[i] = nums2[n-1];
                n --;
            }else if(n<=0){
                nums1[i] = nums1[m-1];
                m --;
            }      
        }
    }
}
目录
相关文章
|
13天前
|
存储 C语言
Leetcode—— 删除排序数组中的重复项——C语言
Leetcode—— 删除排序数组中的重复项——C语言
|
13天前
|
算法 C语言
Leetcode----旋转数组 ------C语言篇
Leetcode----旋转数组 ------C语言篇
|
8天前
|
索引
【力扣刷题】数组实现栈、后缀表达式(逆波兰表达式)求值、中缀表达式转换为后缀表达式(无括号&&有括号)
【力扣刷题】数组实现栈、后缀表达式(逆波兰表达式)求值、中缀表达式转换为后缀表达式(无括号&&有括号)
14 0
|
10天前
DAY-4 | 力扣 - 求自身以外数组的乘积:区间划分,左右累乘,巧求乘积
该文档是关于LeetCode上的一道题目“Product of Array Except Self”的题解。提供了两种解题方法,一是暴力破解,即计算所有数的乘积后再逐个除以当前元素;二是左右累乘法,通过两次遍历数组分别计算左侧和右侧元素的乘积,避免了除法操作。其中,左右累乘法更优,代码实现中展示了这种方法。
19 1
|
12天前
|
存储 算法
【数据结构与算法 | 基础篇】[数组专题]力扣88
【数据结构与算法 | 基础篇】[数组专题]力扣88
|
8天前
|
索引
【力扣刷题】两数求和、移动零、相交链表、反转链表
【力扣刷题】两数求和、移动零、相交链表、反转链表
16 2
【力扣刷题】两数求和、移动零、相交链表、反转链表
|
7天前
|
算法
"刷题记录:哈希表+双指针 | leetcode-2465. 不同的平均值数目 "
该文段是一篇关于编程题目的解答,主要讨论如何找到数组中所有不同平均值的个数。作者首先使用排序和哈希集来解决,将数组转为列表排序后,通过双指针计算平均值并存入哈希集以去重。然后,作者发现可以优化方案,通过双指针在排序后的数组中直接计算两数之和,用哈希集记录不重复的和,从而避免实际计算平均值,提高了算法效率。最终代码展示了这两种方法。
15 0
|
8天前
|
索引
【力扣刷题】删除链表的倒数第 N 个结点、两两交换链表中的节点、随机链表的复制
【力扣刷题】删除链表的倒数第 N 个结点、两两交换链表中的节点、随机链表的复制
14 0
|
8天前
|
存储 算法 索引
【力扣刷题】只出现一次的数字、多数元素、环形链表 II、两数相加
【力扣刷题】只出现一次的数字、多数元素、环形链表 II、两数相加
19 1
|
8天前
【力扣刷题】二叉树的中序遍历、二叉树的最大深度、翻转二叉树、对称二叉树
【力扣刷题】二叉树的中序遍历、二叉树的最大深度、翻转二叉树、对称二叉树
15 0