当前位置:网站首页>记一次某公司面试题:合并有序数组
记一次某公司面试题:合并有序数组
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));
}
}
边栏推荐
- Use of dataset of pytorch
- Kubesphere - deploy the actual combat with the deployment file (3)
- IDEA 导入导出 settings 设置文件
- CSDN问答标签技能树(二) —— 效果优化
- CSDN question and answer module Title Recommendation task (II) -- effect optimization
- API learning of OpenGL (2004) gl_ TEXTURE_ MIN_ FILTER GL_ TEXTURE_ MAG_ FILTER
- 解决扫描不到xml、yml、properties文件配置
- February 13, 2022 - Maximum subarray and
- [paper reading notes] - cryptographic analysis of short RSA secret exponents
- API learning of OpenGL (2003) gl_ TEXTURE_ WRAP_ S GL_ TEXTURE_ WRAP_ T
猜你喜欢
MySQL27-索引优化与查询优化
MySQL 29 other database tuning strategies
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
[recommended by bloggers] C # generate a good-looking QR code (with source code)
Water and rain condition monitoring reservoir water and rain condition online monitoring
Mysql21 user and permission management
【博主推荐】asp.net WebService 后台数据API JSON(附源码)
Esp8266 at+cipstart= "", "", 8080 error closed ultimate solution
Emotional classification of 1.6 million comments on LSTM based on pytoch
MySQL18-MySQL8其它新特性
随机推荐
【博主推荐】C#生成好看的二维码(附源码)
FRP intranet penetration
Postman uses scripts to modify the values of environment variables
[recommended by bloggers] asp Net WebService background data API JSON (with source code)
MySQL完全卸载(Windows、Mac、Linux)
CSDN-NLP:基于技能树和弱监督学习的博文难度等级分类 (一)
Windows cannot start the MySQL service (located on the local computer) error 1067 the process terminated unexpectedly
Have you mastered the correct posture of golden three silver four job hopping?
MySQL 29 other database tuning strategies
MySQL 20 MySQL data directory
API learning of OpenGL (2005) gl_ MAX_ TEXTURE_ UNITS GL_ MAX_ TEXTURE_ IMAGE_ UNITS_ ARB
CSDN问答模块标题推荐任务(一) —— 基本框架的搭建
La table d'exportation Navicat génère un fichier PDM
Navicat 導出錶生成PDM文件
Solve the problem that XML, YML and properties file configurations cannot be scanned
MySQL27-索引优化与查询优化
MySQL36-数据库备份与恢复
IDEA 导入导出 settings 设置文件
CSDN markdown editor
Ansible实战系列二 _ Playbook入门