当前位置:网站首页>记一次某公司面试题:合并有序数组
记一次某公司面试题:合并有序数组
2022-07-06 09:13:00 【三笠·阿卡曼】
来源
2021/09/24:接到某公司面试,手撕一到合并有序数组的题,当时做的差不多了,面试官时间给的相对短了一些,临界值处理有问题, 没完全写出来有些遗憾,不过至少自己思路没错,参考网上给出的资料,现整理出一个比较好的解决方式,自己也只是写了一点测试用例,若有错误,烦请指正!
具体题目不讲了,就看题目标题吧
上代码
package com.vleus.algorithm.strings;
import java.util.Arrays;
/** * @author vleus * @date 2021年09月24日 19:50 */
public class Solution {
//两个有序数组,合并成一个有序数组,要求时间复杂度为O(n)
public static int[] getNewArr(int[] arr1, int[] arr2) {
if (arr1.length == 0) {
return arr2;
}
if (arr2.length == 0) {
return arr1;
}
int i = 0;
int j = 0;
int[] newArr = new int[arr1.length + arr2.length];
for (int k = 0; k < newArr.length; k++) {
if (arr1[i] < arr2[j] && i <= arr1.length - 1) {
newArr[k] = arr1[i];
i++;
continue;
}
if (arr1[i] >= arr2[j] && j <= arr2.length - 1) {
newArr[k] = arr2[j];
j++;
continue;
}
}
return newArr;
}
public static int[] getNewArr2(int[] arr1, int[] arr2) {
int i = arr1.length + arr2.length - 1;
int i1 = arr1.length - 1;
int i2 = arr2.length - 1;
int[] newArr = new int[arr1.length+arr2.length];
while (i1 >= 0 && i2 >= 0) {
if (arr1[i1] >= arr2[i2]) {
newArr[i] = arr1[i1];
i1--;
i--;
}else{
newArr[i] = arr2[i2];
i2--;
i--;
}
}
if(i1 >= 0){
System.arraycopy(arr1,0,newArr,i1,i1+1);
}
if (i2 >= 0) {
System.arraycopy(arr2,0,newArr,i2,i2+1);
}
return newArr;
}
public static void main(String[] args) {
int[] arr1 = new int[]{
1, 3, 5, 7, 7, 8,12};
int[] arr2 = new int[]{
2, 4, 6, 8, 8};
int[] newArr2 = getNewArr2(arr1, arr2);
System.out.println(Arrays.toString(newArr2));
}
}
边栏推荐
- MNIST implementation using pytoch in jupyter notebook
- MySQL35-主从复制
- MySQL32-锁
- [paper reading notes] - cryptographic analysis of short RSA secret exponents
- Windows cannot start the MySQL service (located on the local computer) error 1067 the process terminated unexpectedly
- CSDN question and answer module Title Recommendation task (I) -- Construction of basic framework
- Texttext data enhancement method data argument
- CSDN问答模块标题推荐任务(二) —— 效果优化
- CSDN blog summary (I) -- a simple first edition implementation
- MySQL主从复制、读写分离
猜你喜欢

Navicat 导出表生成PDM文件

A brief introduction to the microservice technology stack, the introduction and use of Eureka and ribbon

MySQL24-索引的数据结构

CSDN问答模块标题推荐任务(二) —— 效果优化
![[C language] deeply analyze the underlying principle of data storage](/img/d6/1c0cd38c75da0d0cc1df7f36938cfb.png)
[C language] deeply analyze the underlying principle of data storage

Valentine's Day is coming, are you still worried about eating dog food? Teach you to make a confession wall hand in hand. Express your love to the person you want

API learning of OpenGL (2002) smooth flat of glsl

MySQL35-主从复制

windows无法启动MYSQL服务(位于本地计算机)错误1067进程意外终止
![[recommended by bloggers] C # generate a good-looking QR code (with source code)](/img/5a/1dbafe5a28f016b815964b9b37c9f1.jpg)
[recommended by bloggers] C # generate a good-looking QR code (with source code)
随机推荐
Copy constructor template and copy assignment operator template
Ansible practical Series II_ Getting started with Playbook
CSDN question and answer module Title Recommendation task (II) -- effect optimization
windows下同时安装mysql5.5和mysql8.0
Mysql36 database backup and recovery
Emotional classification of 1.6 million comments on LSTM based on pytoch
[BMZCTF-pwn] 12-csaw-ctf-2016-quals hungman
MySQL21-用戶與權限管理
Mysql35 master slave replication
Mysql27 - Optimisation des index et des requêtes
Anaconda3 installation CV2
Install mysql5.5 and mysql8.0 under windows at the same time
La table d'exportation Navicat génère un fichier PDM
February 13, 2022-3-middle order traversal of binary tree
Mysql23 storage engine
Idea import / export settings file
[recommended by bloggers] C # generate a good-looking QR code (with source code)
Generate PDM file from Navicat export table
MySQL33-多版本并发控制
MySQL29-数据库其它调优策略