Java学习手册:广联达2020届校园招聘——软件开发工程师/测试工程师

本文介绍了广联达2020届校园招聘的软件开发工程师和测试工程师面试题,包括C/C++程序填空、扑克牌交换、盛水最多的容器(LeetCode10)和圆中含有的方块最大数四道题目,详细讲解了思路和解决方案,尤其重点分析了盛水最多容器问题的双索引技术解法。

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

1、C/C++程序填空题(20分)

大体是一个递归调用,需要填写递归调用的参数。

2、交换扑克牌(20分)

给定了两数组,规定只能交换一个元素,使得两个数组的总和相同。

3、盛水最多的容器(leetcode10)(30分)

题目:

给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
注意:你不能倾斜容器,且 n 的值至少为 2。
在这里插入图片描述

示例:

输入:[1, 8, 6, 2, 5, 4, 8, 3, 7]
输出:49

思路:

双索引技术,引入左指针l(记录左边元素的下标)、右指针r(记录右边元素的下标),具体过程如下:
①取出左右两边的元素,求出maxArea;
②判断左右元素的大小,如果左边元素大于右边元素,则右指针左移;如果右边元素大于左边元素,则左指针右移。
③每次移动之后再求一次maxArea,与之前的maxArea进行比较,取最大值;
④重复②③过程,直到遍历完成,返回maxArea;

代码如下:
package com.haobi;

import java.util.Scanner;

//3、盛水最多的容器(leetcode10)
public class Test2 {
   
   
	public static void main(String[] args) {
   
   
		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		String[] s = str.split(",")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值