当前位置:网站首页>记一次某公司面试题:合并有序数组
记一次某公司面试题:合并有序数组
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));
}
}
边栏推荐
- A brief introduction to the microservice technology stack, the introduction and use of Eureka and ribbon
- MySQL24-索引的数据结构
- Isn't there anyone who doesn't know how to write mine sweeping games in C language
- CSDN question and answer module Title Recommendation task (I) -- Construction of basic framework
- MySQL23-存儲引擎
- CSDN-NLP:基于技能树和弱监督学习的博文难度等级分类 (一)
- FRP intranet penetration
- How to find the number of daffodils with simple and rough methods in C language
- MySQL32-锁
- Mysql27 index optimization and query optimization
猜你喜欢
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
MySQL20-MySQL的数据目录
MySQL master-slave replication, read-write separation
CSDN markdown editor
【博主推荐】SSM框架的后台管理系统(附源码)
Invalid global search in idea/pychar, etc. (win10)
【博主推荐】C# Winform定时发送邮箱(附源码)
MySQL24-索引的数据结构
Install mysql5.5 and mysql8.0 under windows at the same time
【博主推荐】asp.net WebService 后台数据API JSON(附源码)
随机推荐
Mysql21 - gestion des utilisateurs et des droits
Mysql25 index creation and design principles
MySQL18-MySQL8其它新特性
Solution: log4j:warn please initialize the log4j system properly
Navicat 导出表生成PDM文件
Mysql27 index optimization and query optimization
[recommended by bloggers] background management system of SSM framework (with source code)
Mysql30 transaction Basics
Other new features of mysql18-mysql8
Copy constructor template and copy assignment operator template
Mysql28 database design specification
CSDN question and answer tag skill tree (I) -- Construction of basic framework
Postman uses scripts to modify the values of environment variables
The virtual machine Ping is connected to the host, and the host Ping is not connected to the virtual machine
Global and Chinese markets for aprotic solvents 2022-2028: Research Report on technology, participants, trends, market size and share
MySQL23-存儲引擎
Mysql32 lock
[paper reading notes] - cryptographic analysis of short RSA secret exponents
Postman Interface Association
MySQL25-索引的创建与设计原则