zoukankan      html  css  js  c++  java
  • 【LeeCode88】Merge Sorted Array★

    1.题目描述:

    2.解题思路:

       题意:两个由整数构成的有序数组nums1和nums2,合并nums2到nums1,使之成为一个有序数组。注意,假设数组nums1有足够的空间存储nums1和nums2的所有元素(>=m+n)。

      思路很简单,直接上代码。

    3.Java代码:

    (1)普通

     1 //public class LeetCode88 为测试代码
     2 public class LeetCode88 {
     3     public static void main(String[] args) {
     4         int[] nums1=new int[8];
     5         nums1[0]=1;
     6         nums1[1]=3;
     7         nums1[2]=5;
     8         System.out.println("初始时nums1:"+nums1[0]+","+nums1[1]+","+nums1[2]);
     9         int[] nums2={2,4,6,8};
    10         new Solution().merge(nums1, 3, nums2, 4);
    11         System.out.print("合并后nums1:"+nums1[0]);
    12         for(int i=1;i<nums1.length-1;i++){
    13             System.out.print(","+nums1[i]);
    14         }
    15         }
    16 }
    17 
    18 //class Solution为ac代码
    19 class Solution {
    20     public void merge(int[] nums1, int m, int[] nums2, int n) {
    21         int i=m-1,j=n-1,k=m+n-1;
    22         while(i>-1&&j>-1) nums1[k--]=(nums1[i]>nums2[j])?nums1[i--]:nums2[j--];
    23         while(j>-1) nums1[k--]=nums2[j--];
    24     }
    25 }

    测试结果:

    (2)更简洁写法(来自网上大神,一行代码解决!):

     1 //public class LeetCode88 为测试代码
     2 public class LeetCode88 {
     3     public static void main(String[] args) {
     4         int[] nums1=new int[8];
     5         nums1[0]=1;
     6         nums1[1]=3;
     7         nums1[2]=5;
     8         System.out.println("初始时nums1:"+nums1[0]+","+nums1[1]+","+nums1[2]);
     9         int[] nums2={2,4,6,8};
    10         new Solution().merge(nums1, 3, nums2, 4);
    11         System.out.print("合并后nums1:"+nums1[0]);
    12         for(int i=1;i<nums1.length-1;i++){
    13             System.out.print(","+nums1[i]);
    14         }
    15         }
    16 }
    17 
    18 //class Solution为ac代码
    19 class Solution {
    20     public void merge(int[] nums1, int m, int[] nums2, int n) {
    21          while(n>0) nums1[m+n-1]=(m==0||nums2[n-1]>nums1[m-1])?nums2[--n]:nums1[--m];
    22     }
    23 }

    测试结果:

  • 相关阅读:
    Qt 添加外部库文件
    实例属性的增删改查
    面向对象2 类属性的增删改查
    面向对象
    hashlib模块
    configparser模块
    logging模块
    re模块2
    计算器 暂时没解决小数问题
    re正则表达式
  • 原文地址:https://www.cnblogs.com/zhangboy/p/6497292.html
Copyright © 2011-2022 走看看