leetcode 88--Merge Sorted Array 数组 合并 双指针
来源:互联网 发布:什么是互联网金融知乎 编辑:程序博客网 时间:2024/05/16 12:59
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.
本题是要把两个有序的数组合并成一个有序的数组,并且不允许开辟新空间,合并后的数组是原来的那一个数组。常见的误区是从前往后,比较然后存放,再然后看看哪一个数组有剩余,把剩余的继续存放。这样会造成改变,因为结果存放在原来的一个数组里面。
java错误版本:
public class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { if(m==0||n==0){ return; } int i=0,j=0,k=0; while(i<=m&&j<=n){ if(nums1[i]>nums2[j]){ nums1[k++]=nums2[j++]; } else{ nums1[k++]=nums1[i++]; } } while(i<=m){ nums1[k++]=nums1[i++]; } while(j<=n){ nums1[k++]=nums2[j++]; } }}
正确的做法应该是从后往前,找较大的数依次存放。
public class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { if(m==0||n==0) return; int i = m+n-1; int index1 = m-1; int index2 = n-1; //从后往前把两个指针处的数组值比较,将大的放到nums1[]后面。 while(index1>=0 && index2>=0){ if(nums1[index1]<=nums2[index2]){ nums1[i--]=nums2[index2--]; } else nums1[i--]=nums1[index1--]; } //将剩余的nums2[]中的元素放到nums1[]前面,nums1[]不用处理,因为自然就在前面 while(index2>=0) { nums1[i--]=nums2[index2--]; } }}
1 0
- leetcode 88--Merge Sorted Array 数组 合并 双指针
- leetcode 88. Merge Sorted Array-合并链表|双指针
- 【LeetCode】Merge Sorted Array ---合并数组
- leetcode Merge Sorted Array 合并有序数组
- [LeetCode-88] Merge Sorted Array(合并有序数组)
- LeetCode 88 Merge Sorted Array(合并排序数组)(*)
- LeetCode-88:Merge Sorted Array (合并两排序数组)
- Merge Sorted Array 合并两个有序数组 @LeetCode
- leetcode Merge Sorted Array合并两排序数组
- 【LeetCode】- Merge Sorted Array (合并有序数组).
- (每日算法)LeetCode -- Merge Sorted Array (合并有序数组)
- LeetCode Merge Sorted Array(合并有序数组)
- LeetCode 88. Merge Sorted Array(合并有序数组)
- Leetcode 88. Merge Sorted Array 合并已排序数组
- leetcode 88. Merge Sorted Array合并有序数组
- (数组)leetcode 88:Merge Sorted Array
- Merge Sorted Array 合并两个有序数组
- Merge Sorted Array -- 合并两个有序数组
- jquery下的selected兼容问题
- 有关个人账号,公司账号,企业账号的申请
- 求解n个元素{r1,r2,…,rn}的全排列。 n个元素的全排列有n!种可能。
- Linux系统录制GIF
- 自定义圆环进度条+自定义属性
- leetcode 88--Merge Sorted Array 数组 合并 双指针
- Redis实现关注关系
- win64 安装sql server 2008R2时报错“检查到visual studio2008 版本”的解决办法
- 稳压电路之5V到3.3V的几种电源方案
- Java 设计模式(八) Proxy(代理)模式及Spring引申
- Path Sum 路径和(注:同时包含得到各个路径的模板:两种不同表达形式的代码)
- 使用脚本和定时任务自动备份管理服务器
- iOS post上传图片
- C++第五次实验