当前位置:网站首页>记一次某公司面试题:合并有序数组
记一次某公司面试题:合并有序数组
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));
}
}
边栏推荐
- Have you mastered the correct posture of golden three silver four job hopping?
- CSDN问答标签技能树(二) —— 效果优化
- Generate PDM file from Navicat export table
- Global and Chinese markets for aprotic solvents 2022-2028: Research Report on technology, participants, trends, market size and share
- CSDN-NLP:基于技能树和弱监督学习的博文难度等级分类 (一)
- How to change php INI file supports PDO abstraction layer
- Pytoch LSTM implementation process (visual version)
- Esp8266 at+cipstart= "", "", 8080 error closed ultimate solution
- Postman environment variable settings
- CSDN blog summary (I) -- a simple first edition implementation
猜你喜欢

Emotional classification of 1.6 million comments on LSTM based on pytoch

MySQL26-性能分析工具的使用

【博主推荐】SSM框架的后台管理系统(附源码)

Case identification based on pytoch pulmonary infection (using RESNET network structure)

MySQL master-slave replication, read-write separation

Postman Interface Association

Win10: how to modify the priority of dual network cards?

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

Just remember Balabala

CSDN markdown editor
随机推荐
CSDN Q & a tag skill tree (V) -- cloud native skill tree
[C language] deeply analyze the underlying principle of data storage
Win10: how to modify the priority of dual network cards?
++Implementation of I and i++
February 13, 2022-3-middle order traversal of binary tree
[recommended by bloggers] C MVC list realizes the function of adding, deleting, modifying, checking, importing and exporting curves (with source code)
Copie maître - esclave MySQL, séparation lecture - écriture
Mysql27 - Optimisation des index et des requêtes
[BMZCTF-pwn] 12-csaw-ctf-2016-quals hungman
CSDN问答标签技能树(五) —— 云原生技能树
CSDN博文摘要(一) —— 一个简单的初版实现
Emotional classification of 1.6 million comments on LSTM based on pytoch
SSM integrated notes easy to understand version
[recommended by bloggers] C WinForm regularly sends email (with source code)
Anaconda3 installation CV2
Yum prompt another app is currently holding the yum lock; waiting for it to exit...
[reading notes] rewards efficient and privacy preserving federated deep learning
Database middleware_ MYCAT summary
Global and Chinese markets of static transfer switches (STS) 2022-2028: Research Report on technology, participants, trends, market size and share
MySQL master-slave replication, read-write separation