当前位置: 首页 > 面试经验 >

360笔试-2024.2.25

优质
小牛编辑
89浏览
2024-02-25

360笔试-2024.2.25

技术综合J卷

60分选择题

2道编程题

题目一好像是:

```java

/**

* @author xin麒

* @date 2024/2/25 16:38

* 第一行输入n

* 第二行输入一串数字,之间用空格隔开

* 每次操作将一些相同的数字和v相加(v可以为负数),计算最小操作次数

*/

public class Main {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

int n = Integer.parseInt(scanner.nextLine());

String[] split = scanner.nextLine().split(" ");

Map<String, Integer> map = new HashMap<>();

for(String s : split){

Integer count = map.get(s);

if (count == null){

map.put(s,1);

}else{

map.put(s,count + 1);

}

}

System.out.println(map.size() - 1);

}

}

```

题目2好像是:

```java

/**

* @author xin麒

* @date 2024/2/25 16:39

* 第一行输入n

* 第二行输入len=n的字符串s,每个字符在['1','9']

* 1可以用a,表示,2可以用b表示 ...... 26可用z表示

* 计算s的所有表示方式

* 例如:

* 2

* 11

* 输出:

* 2

* 解析:

* 11可以用aa来表示,也可以用k来表示,共2中表示方式

*/

import java.util.*;

public class Main{

public static void main(String[] args){

Scanner scanner = new Scanner(System.in);

int n = Integer.parseInt(scanner.nextLine());

String s = scanner.nextLine();

//判空

if(n == 0) {

System.out.println();

return ;

}

if(n == 1){

System.out.println(1);

return ;

}//long

long[] nums = new long[n];

nums[0] = 1;

char[] chs = s.toCharArray();

String str = "";

str += chs[0];

str += chs[1];

nums[1] = 1;

if(Integer.parseInt(str) <= 26) nums[1] = 2;

for(int i = 2;i < n;i++){

nums[i] = nums[i - 1] % 1000000007;

str = "";

str += chs[i - 1];

str += chs[i];

if(Integer.parseInt(str) <= 26) {

long tmp = nums[i - 2] % 1000000007;

nums[i] += tmp;

nums[i] %= 1000000007;

}

}

System.out.println(nums[n - 1] %1000000007);

}

}

```

 类似资料: