京东java笔试题,题解

京东java笔试题,题解
第一道求是否是完全多部图,说实话这题目题意理解了好久,才发现2个点集合是否相交。我想法直接用邻接矩阵来存储图,然后暴力搜索就可以了,但只ac了百分之80多,不知道哪出问题了
第二题挺简单的,还是直接暴力搜索吧。
//第一题
import java.util.Scanner;
public class jindong {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for(int i=0;i<T;i++){
int n = sc.nextInt();
int m = sc.nextInt();
if(m == 0){
System.out.println("No");
continue;
}
int a[][] = new int[n][n];
for(int j=0;j<m;j++){
int x = sc.nextInt();
int y = sc.nextInt();
a[x-1][y-1] = 1;
a[y-1][x-1] = 1;
}
boolean zt[] = new boolean[n];  //每个分组的状态
for(int k=0;k<n;k++){ //分组暴力搜索,0..k和k..n-1
for(int l=0;l<=k;l++){ //这2个循环,判断第一组所有元素和第二组所有是否邻接
for(int r=n-l-1;r<n;r++){
if(a[l][r] == 1 || a[r][l] == 1){ //若矩阵元素是1表示邻接
zt[k]=true;
break;
}
}
}
}
boolean zt1 = false;
for(int kk=0;kk<n;kk++){ //若每个分组状态都为true,表示是完全多部图
if(zt[kk] == false){
break;
}
zt1 = true;
}
if(zt1 == true) System.out.println("Yes");
else System.out.println("No");
}
}
}

//第二题 求不合格产品个数,设置一个状态数组表示是否被确认为不合格,直接暴力搜索
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a[] = new int[n];
int b[] = new int[n];
int c[] = new int[n];
for(int i=0;i<n;i++){
a[i] = sc.nextInt();
b[i] = sc.nextInt();
c[i] = sc.nextInt();
}
boolean used[] = new boolean[n];
int count=0;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(a[j]>a[i] && b[j]>b[i] &&c[j]>c[i] && used[i]==false){
count++;
used[i] = true;
break;
}
}
}
System.out.println(count);
}




#京东##题解##笔试题目#
全部评论

相关推荐

0816&nbsp;京东笔试答案第一题,&nbsp;减少逆序对数量对于每个&nbsp;ai,&nbsp;找到&nbsp;所有&nbsp;aj&nbsp;=&nbsp;a[i]&nbsp;+&nbsp;1&nbsp;且&nbsp;j&nbsp;&lt;&nbsp;i&nbsp;的&nbsp;j,&nbsp;则对于选择&nbsp;j&nbsp;&lt;&nbsp;L&nbsp;&lt;=&nbsp;i&nbsp;的&nbsp;L&nbsp;贡献&nbsp;+1,&nbsp;然后做一个前缀和取最大值即可代码```#include&nbsp;&lt;iostream&gt;#include&nbsp;&lt;cstring&gt;#include&nbsp;&lt;algorithm&gt;#include&nbsp;&lt;vector&gt;#include&nbsp;&lt;unordered_map&gt;using&nbsp;namespace&nbsp;std;void&nbsp;solve(){int&nbsp;n;&nbsp;cin&nbsp;&gt;&gt;&nbsp;n;vector&lt;int&gt;&nbsp;a(n&nbsp;+&nbsp;10,&nbsp;0),&nbsp;b(n&nbsp;+&nbsp;10,&nbsp;0),&nbsp;c(n&nbsp;+&nbsp;10,&nbsp;0);unordered_map&lt;int,&nbsp;vector&lt;int&gt;&gt;&nbsp;pos;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;1;&nbsp;i&nbsp;&lt;=&nbsp;n;&nbsp;i&nbsp;++){cin&nbsp;&gt;&gt;&nbsp;a[i];}for&nbsp;(int&nbsp;i&nbsp;=&nbsp;1;&nbsp;i&nbsp;&lt;=&nbsp;n;&nbsp;i&nbsp;++){int&nbsp;v&nbsp;=a[i];int&nbsp;t&nbsp;=&nbsp;v&nbsp;+&nbsp;1;if&nbsp;(pos.find(t)&nbsp;!=&nbsp;pos.end()){for&nbsp;(int&nbsp;j&nbsp;:&nbsp;pos[t]){if&nbsp;(j&nbsp;&lt;&nbsp;i){b[j&nbsp;+&nbsp;1]&nbsp;++;b[i&nbsp;+&nbsp;1]&nbsp;--;}}}pos[v].push_back(i);}int&nbsp;ans&nbsp;=&nbsp;0;int&nbsp;tmp&nbsp;=&nbsp;0;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;1;&nbsp;i&nbsp;&lt;=&nbsp;n;&nbsp;i&nbsp;++){tmp&nbsp;+=&nbsp;b[i];ans&nbsp;=&nbsp;max(ans,&nbsp;tmp);}cout&nbsp;&lt;&lt;&nbsp;ans&nbsp;&lt;&lt;&nbsp;endl;}int&nbsp;main(){int&nbsp;_&nbsp;=&nbsp;1;cin&nbsp;&gt;&gt;&nbsp;_;while&nbsp;(_&nbsp;--){solve();}}```第二题,&nbsp;跳水打分解法类似求区间最值,&nbsp;维护每个长度为&nbsp;m&nbsp;的区间的最大值和最小值,&nbsp;然后遍历过去即可算出答案。代码```#include&nbsp;&lt;bits/stdc++.h&gt;#define&nbsp;PII&nbsp;pair&lt;long,&nbsp;long&gt;#define&nbsp;x&nbsp;first#define&nbsp;y&nbsp;secondusing&nbsp;namespace&nbsp;std;int&nbsp;main(){int&nbsp;n,&nbsp;m;cin&nbsp;&gt;&gt;&nbsp;n&nbsp;&gt;&gt;&nbsp;m;priority_queue&lt;PII&gt;&nbsp;maxPq;priority_queue&lt;PII,&nbsp;vector&lt;PII&gt;,&nbsp;greater&lt;PII&gt;&gt;&nbsp;minPq;vector&lt;long&nbsp;long&gt;&nbsp;a(n&nbsp;+&nbsp;10);double&nbsp;ans&nbsp;=&nbsp;0;long&nbsp;long&nbsp;tmp&nbsp;=&nbsp;0;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;1;&nbsp;i&nbsp;&lt;=&nbsp;n;&nbsp;i&nbsp;++)&nbsp;cin&nbsp;&gt;&gt;&nbsp;a[i];for&nbsp;(int&nbsp;i&nbsp;=&nbsp;1;&nbsp;i&nbsp;&lt;=&nbsp;m;&nbsp;i&nbsp;++){maxPq.push({a[i],&nbsp;i});minPq.push({a[i],&nbsp;i});tmp&nbsp;+=&nbsp;a[i];}long&nbsp;long&nbsp;minV&nbsp;=&nbsp;minPq.top().x;long&nbsp;long&nbsp;maxV&nbsp;=&nbsp;maxPq.top().x;ans&nbsp;=&nbsp;double(tmp&nbsp;-&nbsp;minV&nbsp;-&nbsp;maxV)&nbsp;/&nbsp;(m&nbsp;-&nbsp;2);int&nbsp;ans2&nbsp;=&nbsp;1;int&nbsp;l&nbsp;=&nbsp;1,&nbsp;r&nbsp;=&nbsp;m;while&nbsp;(r&nbsp;&lt;&nbsp;n){//&nbsp;cout&nbsp;&lt;&lt;&nbsp;ans&nbsp;&lt;&lt;&nbsp;endl;tmp&nbsp;-=&nbsp;a[l];&nbsp;l&nbsp;++;r&nbsp;++;&nbsp;tmp&nbsp;+=&nbsp;a[r];minPq.push({a[l],&nbsp;l});&nbsp;minPq.push({a[r],&nbsp;r});maxPq.push({a[l],&nbsp;l});&nbsp;maxPq.push({a[r],&nbsp;r});while&nbsp;(minPq.top().y&nbsp;&lt;&nbsp;l)&nbsp;minPq.pop();while&nbsp;(maxPq.top().y&nbsp;&lt;&nbsp;l)&nbsp;maxPq.pop();if&nbsp;((double(tmp&nbsp;-&nbsp;minPq.top().x&nbsp;-&nbsp;maxPq.top().x)&nbsp;/&nbsp;(m&nbsp;-&nbsp;2))&nbsp;&gt;&nbsp;ans){ans&nbsp;=&nbsp;double(tmp&nbsp;-&nbsp;minPq.top().x&nbsp;-&nbsp;maxPq.top().x)&nbsp;/&nbsp;(m&nbsp;-&nbsp;2);ans2&nbsp;=&nbsp;l;}}cout&nbsp;&lt;&lt;&nbsp;ans2&nbsp;&lt;&lt;&nbsp;endl;}```
投递京东等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务