LeetCode合并问题汇总

本文汇总了LeetCode中的合并问题,包括数组合并、两个有序链表的合并、合并多个有序链表以及区间合并。详细介绍了每个问题的解决思路和代码实现,涉及排序和递归等技巧。
摘要由CSDN通过智能技术生成

       刷题包括笔试中经常会遇到合并问题,将LeetCode中常见的合并问题的代码总结如下,包括数组合并、链表合并、区间合并,涉及到排序,递归等常用操作:

 

1.关于数组合并:(LeetCode 88: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 to hold additional elements from B. The number of elements initialized in A  and B are m and n respectively.

    题意:给定两个排序的整数数组A和B,将B合并为A作为一个排序的数组。

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

 

2.两个有序链表的合并:(LeetCode 21:merge-two-sorted-lists)

       Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

     也是剑指offer的原题,使用递归来处理。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = n
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值