leetcode88
public class Solution {
public void Merge(int[] nums1, int m, int[] nums2, int n) {
//for (int i = 0; i < n; i++)
//{
//nums1[m++] = nums2[i];
//}
//nums1 = nums1.OrderBy(x => x).ToArray();
int i = m - ;
int j = n - ;
int k = m + n - ;
while (i >= && j >= )
{
if (nums1[i] > nums2[j])
{
nums1[k--] = nums1[i--];
}
else
{
nums1[k--] = nums2[j--];
}
}
while (j >= )
{
nums1[k--] = nums2[j--];
}
}
}
https://leetcode.com/problems/merge-sorted-array/#/description
补充一个java的实现:
public class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int index1 = m - , index2 = n - ;
int indexMerge = m + n - ;
while (index1 >= || index2 >= ) {
if (index1 < ) {
nums1[indexMerge--] = nums2[index2--];
} else if (index2 < ) {
nums1[indexMerge--] = nums1[index1--];
} else if (nums1[index1] > nums2[index2]) {
nums1[indexMerge--] = nums1[index1--];
} else {
nums1[indexMerge--] = nums2[index2--];
}
}
}
}
主要思想是使用双指针。两个数组都从后向前遍历,比较两个数组中的值,大的插入到nums1的末尾。
如果一个数组已经遍历完了,那么就把另一个数组剩余元素按照倒叙,依次插入(更新)nums1。
补充一个python的实现:
class Solution:
def merge(self, nums1: 'List[int]', m: int, nums2: 'List[int]', n: int) -> None:
"""
Do not return anything, modify nums1 in-place instead.
"""
i,j,k = m-,n-,m+n- while i >= and j >= :
if nums1[i] < nums2[j]:
nums1[k] = nums2[j]
k -=
j -=
elif nums1[i] > nums2[j]:
nums1[k] = nums1[i]
k -=
i -=
else:
nums1[k] = nums1[i]
k -=
i -=
while j >= :
nums1[k] = nums2[j]
k -=
j -=
return nums1
leetcode88的更多相关文章
- [Swift]LeetCode88. 合并两个有序数组 | Merge Sorted Array
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: T ...
- 面试题:合并2个有序数组(leetcode88)
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n. ...
- 【leetcode-88,21】 合并两个有序数组/链表
合并两个有序数组 (easy,1过) 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nu ...
- LeetCode88.合并两个有序数组
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n. ...
- leetcode88—Merge Sorted Array
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: T ...
- leetcode88 Merged Sorted Array
题意:两个已排好序的数组,合并成新的数组. 解题思路:刚开始做题,完全找不到思路,想用最简单的插入法做,提示超时了大概是for用多了哈哈··看了下别人的方法果断佩服,利用好已排序这个特点,从后往前添加 ...
- leetcode-88合并两个有序数组
合并两个有序数组 思路:利用索引合并两个列表,排序.注意不需要返回值,只修改nums1 class Solution: def merge(self, nums1: List[int], m: int ...
- leetcode-88. 合并两个有序数组 · Aaray
题面 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 样例 1. 输入: nums1 = [1,2,3,0,0,0], m ...
- 菜鸟刷题路(随缘刷题):leetcode88
lc88 class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int i = m - 1, j = ...
随机推荐
- 【转】ubuntu下修改文件夹权限
常用方法如下: sudo chmod 600 ××× (只有所有者有读和写的权限)sudo chmod 644 ××× (所有者有读和写的权限,组用户只有读的权限)sudo chmod 700 ××× ...
- linux提权辅助工具(三):privchecker.py
来自:https://www.securitysift.com/download/linuxprivchecker.py #!/usr/env python ##################### ...
- MyEclipse10 中设置Jquery提醒,亲测可用
最近做练习需要用到Jquery,在myeclipse中默认没有提示功能.然后在网上找解决方案,有一种方案说使用spket,然后搜索安装,折腾了半天还是不行,脑细胞死掉几百个.. 然后在网上搜到另外一种 ...
- 最大流之dinic
先用bfs预处理出层次图,然后在层次图上用dfs找增广路径,理论复杂度O(n*n*m) const int INF=0xfffffff ; struct node { int s,t,cap,nxt ...
- 斯特灵(Stirling)数
http://zh.wikipedia.org/wiki/%E6%96%AF%E7%89%B9%E7%81%B5%E6%95%B0 第一类:n个元素分成k个非空循环排列(环)的方法总数 递推式:s(n ...
- 51Nod 1049:最大子段和(dp)
1049 最大子段和 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 N个整数组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+ ...
- 毕业了C++二叉树层次遍历
//代码经过测试,赋值粘贴即可用#include<iostream> #include<stdio.h> #include<stack> #include<q ...
- MySQL 练习题4
1.表结构如下: #课程表 CREATE TABLE `course` ( `c_id` ) NOT NULL, `c_name` ) DEFAULT NULL, `t_id` ) DEFAULT N ...
- JAVA通过JDBC连接Oracle数据库详解【转载】
JAVA通过JDBC连接Oracle数据库详解 (2011-03-15 00:10:03) 转载▼http://blog.sina.com.cn/s/blog_61da86dd0100q27w.htm ...
- 【python】函数名存在变量中
变量函数:意思就是将函数名存在变量中,然后根据变量值动态的调用需要的函数. LOGIN = 'xxxx' PASSWD = "xxx" URL = 'xxxxx' def hand ...