zoukankan      html  css  js  c++  java
  • MergeSortedArray,合并两个有序的数组

    问题描述: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.

    算法分析:合并两个数组,但是合并后的数组是原来的数组1,不能新建空间,假设数组1有足够的空间,从后往前遍历,避免覆盖问题。同类问题还有合并两个有序的链表,链表和数组的问题都相似。

    //从后往前遍历比较,不会遇到覆盖的问题
    public class MergeSortedArray
    {
    	public void merge(int[] nums1, int m, int[] nums2, int n) 
    	{
    		int i = m-1, j = n-1;
    		int z = m+n-1;
            while(i >= 0 && j >= 0)
            {
            	if(nums1[i] > nums2[j])
            	{
            		nums1[z--] = nums1[i--];
            	}
            	else
            	{
            		nums1[z--] = nums2[j--]; 
            	}
            }
            if(i < 0)
            {
            	for(int k = j; k >= 0; k --)
            	{
            		nums1[z--] = nums2[k];
            	}
            }
        }
    }
    

    合并两个有序链表:

    public class Solution {
        public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
            ListNode dumy = new ListNode(0);
            ListNode head = dumy;
            while(l1 != null && l2 != null)
            {
                if(l1.val < l2.val)
                {
                    dumy.next = l1;
                    l1 = l1.next;
                }
                else
                {
                    dumy.next = l2;
                    l2 = l2.next;
                }
                dumy = dumy.next;
            }
            if(l1 == null)
            {
                dumy.next = l2;
            }
            if(l2 == null)
            {
                dumy.next = l1;
            }
            return head.next;
        }
    }
    
  • 相关阅读:
    linux 命令——48 watch (转)
    linux 命令——47 iostat (转)
    linux 命令——46 vmstat(转)
    linux 命令——45 free(转)
    linux 命令——44 top (转)
    linux 命令——43 killall(转)
    linux 命令——42 kill (转)
    linux 命令——41 ps(转)
    linux 命令——40 wc (转)
    Java for LeetCode 068 Text Justification
  • 原文地址:https://www.cnblogs.com/masterlibin/p/5800786.html
Copyright © 2011-2022 走看看