问题描述: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有足够的空间,从后往前遍历,避免覆盖问题。同类问题还有合并两个有序的链表,链表和数组的问题都相似。

  1. //从后往前遍历比较,不会遇到覆盖的问题
  2. public class MergeSortedArray
  3. {
  4. public void merge(int[] nums1, int m, int[] nums2, int n)
  5. {
  6. int i = m-1, j = n-1;
  7. int z = m+n-1;
  8. while(i >= 0 && j >= 0)
  9. {
  10. if(nums1[i] > nums2[j])
  11. {
  12. nums1[z--] = nums1[i--];
  13. }
  14. else
  15. {
  16. nums1[z--] = nums2[j--];
  17. }
  18. }
  19. if(i < 0)
  20. {
  21. for(int k = j; k >= 0; k --)
  22. {
  23. nums1[z--] = nums2[k];
  24. }
  25. }
  26. }
  27. }

合并两个有序链表:

  1. public class Solution {
  2. public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
  3. ListNode dumy = new ListNode(0);
  4. ListNode head = dumy;
  5. while(l1 != null && l2 != null)
  6. {
  7. if(l1.val < l2.val)
  8. {
  9. dumy.next = l1;
  10. l1 = l1.next;
  11. }
  12. else
  13. {
  14. dumy.next = l2;
  15. l2 = l2.next;
  16. }
  17. dumy = dumy.next;
  18. }
  19. if(l1 == null)
  20. {
  21. dumy.next = l2;
  22. }
  23. if(l2 == null)
  24. {
  25. dumy.next = l1;
  26. }
  27. return head.next;
  28. }
  29. }

MergeSortedArray,合并两个有序的数组的更多相关文章

  1. merge-sorted-array——合并两个有序数组

    Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may assume th ...

  2. 合并两个有序链表(java实现)

    题目: 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1->1-&g ...

  3. Leecode刷题之旅-C语言/python-88合并两个有序数组

    /* * @lc app=leetcode.cn id=88 lang=c * * [88] 合并两个有序数组 * * https://leetcode-cn.com/problems/merge-s ...

  4. 088 Merge Sorted Array 合并两个有序数组

    给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1中,使得 num1 成为一个有序数组.注意:你可以假设 nums1有足够的空间(空间大小大于或等于m + n)来保存 ...

  5. Leetcode 88:合并两个有序数组

    Leetcode链接 : https://leetcode-cn.com/problems/merge-sorted-array/ 问题描述: 给定两个有序整数数组 nums1 和 nums2,将 n ...

  6. 每日一道 LeetCode (19):合并两个有序数组

    每天 3 分钟,走上算法的逆袭之路. 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub: https://github.com/meteor1993/LeetCode Gitee ...

  7. 合并两个有序数组a和b到c

    问题:两个有序数组a和b,合并成一个有序数组c. // 合并两个有序数组a和b到c void Merge_Array(int a[], int n, int b[], int m, int c[]) ...

  8. leetcode-只出现一次的数字合并两个有序数组

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

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

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

随机推荐

  1. [Algorithms] Graph Traversal (BFS and DFS)

    Graph is an important data structure and has many important applications. Moreover, grach traversal ...

  2. 密码验证连续多位相同或者顺序字符引发的思考.md

    目录 密码验证连续多位相同或者顺序字符引发的思考 需求 思考 实现 总结 参考 密码验证连续多位相同或者顺序字符引发的思考 需求 虽然用户对于这种复杂的密码验证恨之入骨,但是有时出于安全的考虑,我们系 ...

  3. sql语句(mysql中json_contains、json_array的使用)

    https://blog.csdn.net/qq_35952946/article/details/79131488 https://www.jianshu.com/p/455d3d4922e1 1. ...

  4. 在VMW里安装Ghost操作系统遇到的问题及解决的办法

    条件:Ghost系列系统镜像文件 遇到的问题:1.导入镜像文件时提示“无法检测此光盘映像中的操作系统”: 2.分区时提示“ezboot kernel not found” 解决办法:1.直接先创建一个 ...

  5. 迭代器模拟for循环

    s = 'wgugq wgugfgfqwihqwohd' it = s.__iter__() # 生成一个迭代器 while 1: try: # 尝试 el = it.__next__() # 下一个 ...

  6. 简述ODS,和数据仓库做简单的比较

    这两天看书,发现了和数据仓库相关的还有一个叫ODS的概念,它是企业级的全局数据库,用于提供集成的,企业级一致的数据,包含如何从各个子系统中向ODS抽取数据以及面向主题的角度存储数据. 它和数据仓库的主 ...

  7. PAT 1081 Rational Sum[分子求和][比较]

    1081 Rational Sum (20 分) Given N rational numbers in the form numerator/denominator, you are suppose ...

  8. 查看Oracle 基表的方法

    从  v$fixed_view_definition 视图中可以看到 性能视图所依赖的基表 SELECT view_definition FROM v$fixed_view_definition    ...

  9. alter session set events

    .alter session set events 一.Oracle跟踪文件    Oracle跟踪文件分为三种类型,一种是后台报警日志文件,记录数据库在启动.关闭和运行期间后台进程的活动情况,如表空 ...

  10. Linux查看系统信息及系统性能检测命令

    查看系统信息: ~# uname -a (Linux查看版本当前操作系统内核信息)Linux iZ23onhpqvwZ 3.13.0-30-generic #54-Ubuntu SMP Mon Jun ...