顶点 java笔试_3-29 百度 笔试 java后台开发,三道题AC答案

这篇博客分享了作者在顶点java笔试中遇到的三道百度后台开发试题的AC答案。第一题是计算n*(n-1)-1的Java实现,注意防止整数溢出。第二题模拟法解决数组元素不超过N的问题,通过不断调整数组元素。第三题是图论问题,寻找权值递增的最长路径,采用深度优先遍历解决。博主鼓励大家积极应对求职挑战,共同进步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做题的时候写的很匆忙,没有优化,大佬们可以指出(PS: 互联网大厂最后一题经常出图论题目,我最近总是遇到)

题目描述大家可以看16楼

第一题:

由于

n和n-1一定互质,所以直接返回  n*(n-1) -1

注意用

long保存答案,使用int,乘法运算会溢出(python用户可以窃喜)

import java.util.Scanner;

public class Solution1 {

public static void main(String[] args) {

Scanner s = new Scanner(System.in);

long n=s.nextLong();

System.out.print((n-1)*n-1);

}

} 第二题:

模拟法,每次选取最大的一项的值为max;更新最大项max=max%N;  其余每项加上 max/N;

一直循环到满足题目要求,数组每项都小于N

import java.util.Scanner;

public class Solution2 {

public static void main(String[] args) {

Scanner s = new Scanner(System.in);

int N = s.nextInt();

long[] nums=new long[N];

long sum=0;

for (int i = 0; i 

nums[i]=s.nextLong();

}

while(!isValid(nums)){

long max=0;

int index=0;

for (int i = 0; i 

if(max

max=nums[i];

index=i;

}

}

sum+=max/N;

for (int i = 0; i 

nums[i]+=max/N;

}

nums[index]=max%N;

}

System.out.println(sum);

}

public static boolean isValid(long[] nums){

boolean res=true;

for(long l:nums){

if(l>=nums.length){

res=false;

}

}

return res;

}

} 第三题:

当做图模型来解题,求图中权值递增的最长路径;根据题意,图中只有N-1条边,且无法从权值大的点走到权值小的点,因此遍历图的时候,并不会出现“往回走”,“死循环”的问题

所以这里可以直接用深度优先遍历

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

public class Solution3 {

static int max=0;

public static void main(String[] args) {

Scanner s=new Scanner(System.in);

int N=s.nextInt();

int[] nums=new int[N+1];

for (int i = 1; i 

nums[i]=s.nextInt();

}

List[] graph=new ArrayList[N+1];

for(int i=0;i

graph[i]=new ArrayList<>();

}

for (int i = 0; i 

int l=s.nextInt();

int r=s.nextInt();

graph[l].add(r);

graph[r].add(l);

}

for (int i = 1; i 

dfs(graph,nums,i,0);

}

System.out.println(max);

}

public static void dfs(List[] graph,int[] nums,int now,int len){

len+=1;

max=Math.max(max,len);

List nexts=graph[now];

for (int next:nexts ) {

if(nums[next]>nums[now]){

dfs(graph,nums,next,len);

}

}

}

}

找实习/工作不容易,楼主投简历时也很紧张,心态经常起伏,与大家共勉,祝大家都能拿到满意的offer。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值