首页 > 编程语言 >整理牛客网---阿里校招笔试后端Java版,dfs和算法题。

整理牛客网---阿里校招笔试后端Java版,dfs和算法题。

时间:2022-10-27 11:35:47浏览次数:52  
标签:Java scan int res list dfs --- num new


一、 2021(校招)阿里巴巴 7.22 笔试(Java版)

1.1 题目1

给定一个n,求 [1,n] 这 n 个数字的排列组合有多少个。
条件:相邻的两个数字的绝对值不能等于1.
例如:
4
[2, 4, 1, 3]
[3, 1, 4, 2]
static List> res;
public static void main(String[] args) {
res = new LinkedList();
// write your code here
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
scan.close();
int nums[] = new int[N];
judge(N, nums, 0, new LinkedList());
for(List list : res){
System.out.println(list);
}
}
public static void judge(int n, int[] nums, int index, List list){
if(index == n){
res.add(new LinkedList(list));
return;
}
for (int i = 1; i <= n; i++) {
if(nums[i-1] == 0 && (list.size() == 0 || Math.abs(list.get(list.size()-1)-i) != 1)){
list.add(i);
nums[i-1] = 1;
judge(n, nums, index+1, list);
list.remove(list.size()-1);
nums[i-1] = 0;
}
}
}

1.2 题目2

长度为 n 的数组,数组中每个元素 a 满足:1<=a<=n
求连续区间的数量,要求区间中相同元素的数量 >=m
例如:
5 2
1 2 1 5 2
4
可以有4种可能:[1,3],[1,5],[2,5],[1,4]
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();//数量
int m = scan.nextInt();//相同的个数
Map> map = new HashMap();
int res = 0;
int pt = -1;//记录当前元素num前,存在m个相同元素a的第一个元素的下标。不存在则为-1
for (int i = 0; i < N; i++) {
int num = scan.nextInt();
if(map.containsKey(num)){
map.get(num).add(i);
if(map.get(num).size() >= m){
int pre = map.get(num).get(map.get(num).size() - m);
pt = Math.max(pt, pre);
}
}else{
List list = new LinkedList();
list.add(i);
map.put(num, list);
}
res += pt + 1;
}
System.out.println(res);
}


标签:Java,scan,int,res,list,dfs,---,num,new
From: https://blog.51cto.com/u_15848894/5800566

相关文章

  • 【Spark 3.0-JavaAPI-pom】体验JavaRDD函数封装变化
    一、pom<properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><scala.version>2.......
  • 【Alink-KMeans】基于Alink算法平台的聚类【Java实现】
    一、介绍Alink是基于Flink的通用算法平台。1.1数据聚类介绍1.可以定义为5组数据类型的特征字段名称:sepal_lengthdouble,sepal_widthdouble,petal_lengthdouble,peta......
  • AR1220C-S路由设置实例
    AR1220C-S路由设置实例1修改使所有端口都可以访问WEB管理界面undohttpserverpermitinterface2修改web管理端口httpsecure-serverport9000//端口修改为90003......
  • PyTorch-RNN循环神经网络实现分类-回归
    一、RNN1.1简介循环神经网络(RecurrentNeuralNetwork,RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网......
  • PyTorch-CNN卷积神经网络实现手写数字识别
    一、CNN1.1简介卷积神经网络是近些年逐步兴起的一种人工神经网络结构,因为利用卷积神经网络在图像和语音识别方面能够给出更优预测结果,这一种技术也被广泛的传播可应用.......
  • AgileBoot - 如何集成内置数据库H2和内置Redis
    背景介绍为什么我们需要内置的数据库和Redis呢?优点:内置的数据库H2,可以让我们在无依赖数据库的情况下,做集成测试。比如我们想测试添加一个学生到数据库,就需要启动一台数据库......
  • 计算几何基础-代码部分
    先来一个namespacegeo,存下计算几何的基本类型和基本运算//#pragmaGCCoptimize(2)#include<cstdio>#include<cmath>#include<vector>#include<algorithm>usingn......
  • 案例_动态表格-添加、删除
    案例_动态表格-添加、删除<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>动态表格</title><style>table{......
  • python for-break-else 语句
    有两种情况可能会导致for循环结束。第一个是for循环中满足条件遇到break,第二种情况是循环自然结束。现在我们可能想知道其中的哪一个是循环完成的原因,一种方法是设置一个......
  • 安全周报2022-10-20
    PleaseSubscribeWechatOfficialAccount:信安科研人,获取更多的原创安全资讯每周新闻CISA通告ADVANTECH和日立工业电器的存在严重缺陷美国网络安全和基础设施安全局(CIS......