ali 笔试模拟题

题目描述:

小广附近有家盒马店,该店提供配送服务,配送范围是系统根据各项指标决策出的一个多边形,假设小广现在的位置为(x,y),请问小广是否在该盒马店的配送范围内,如果不在配送范围内请问他要最少要走多少距离才能到盒马店配送范围内。假设坐标点在二维平面上,不考虑地球曲率等因素。

 

输入:

x,y(代表小广所在的位置,x表示横坐标,y表示纵坐标)

x1,y1,x2,y2,x3,y3....xn,yn(代表该盒马店的配送范围多边形,其中x表示横坐标,y表示纵坐标,xi和yi代表多边形一个点,点与点按顺序相连形成边,并且最后一个点(xn,yn)与第一个点(x1,y1)相连)

输出:

请问小广是否在盒马店的配送范围内,如果不在配送范围内请问他要最少走多少距离才能到盒马店配送范围内,输出结果为整数(四舍五入)

 

举例说明:

输入:

1,1
0,0,0,2,2,2,2,0

输出:

yes,0

 

输入:

2,2
0,0,0,2,2,2,2,0

输出:

yes,0

 

输入:

3,0
0,0,0,2,2,2,2,0

输出:

no,1

 

输入:

3,4
0,0,0,2,2,2,2,0

输出:

no,2

通过30%。哈哈哈

import java.util.*;
import java.util.List;
public class Main {
/** 请完成下面这个函数,实现题目要求的功能 **/
    /**
     * 当然,你也可以不按照这个模板来作答,完全按照自己的想法来
     **/
    public static String measureDistance(List<Double> xList, List<Double> yList, double x, double y) {
        if(xList==null||yList==null||xList.size()==0||yList.size()==0)
            return "error";
        Collections.sort(xList);
        Collections.sort(yList);
        double xmin = xList.get(0);
        double xmax = xList.get(xList.size()-1);
        double ymin = yList.get(0);
        double ymax = yList.get(xList.size()-1);
        if(x<=xmax&&x>=xmin&&y>=ymin&&y<=ymax)
            return "yes,0";
        else
            return "no";

    }


    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String line = in.nextLine();
        //(x,y)为小广所在的位置
        double x = Double.parseDouble(line.split(",")[0]);
        double y = Double.parseDouble(line.split(",")[1]);

        line = in.nextLine();
        //xList记录了多边形n个点的x坐标,yList记录了多边形n个点的y坐标
        List<Double> xList = new ArrayList<>();
        List<Double> yList = new ArrayList<>();
        String[] array = line.split(",");
        for(int i = 0; i < array.length; i++) {
            xList.add(Double.parseDouble(array[i]));
            yList.add(Double.parseDouble(array[i+1]));
            i++;
        }
        in.close();
        System.out.println(measureDistance(xList, yList, x, y));
    }
}

 

### 阿里巴巴暑期实习笔试目与经验分享 阿里巴巴作为一家全球领先的科技公司,其招聘流程通常包括简历筛选、在线笔试以及多轮面试。以下是关于阿里巴巴暑期实习生笔试目及相关经验的一些总结: #### 笔试形式 阿里巴巴的笔试主要分为技术类和非技术类两种方向。对于技术岗位(如开发工程师、算法工程师),笔试内容往往涉及编程能力测试和技术理论知识评估[^1]。 - **编程能力测试**:考察候选人解决实际问的能力,可能包含但不限于数据结构、算法设计等方面的知识点。 - **技术理论知识**:覆盖计算机网络基础、操作系统原理等内容,有时也会加入数据库管理系统的相关内容。 #### 常见型举例 以下是一些常见的笔试型及其解答思路: 1. **字符串处理** ```python def reverse_string(s): return s[::-1] input_str = "hello world" output_str = reverse_string(input_str) print(output_str) # 输出: dlrow olleh ``` 2. **数组操作** ```python def find_missing_number(nums): n = len(nums) + 1 expected_sum = n * (n + 1) // 2 actual_sum = sum(nums) return expected_sum - actual_sum nums = [1, 2, 4, 5] missing_num = find_missing_number(nums) print(missing_num) # 输出: 3 ``` 这些例子展示了如何通过编写简洁有效的代码来解决问,这是阿里非常看重的一项技能[^2]。 #### 备考建议 为了更好地准备阿里的笔试环节,可以采取如下策略: - 定期练习LeetCode上的经典目,尤其是那些标记为高频面试的部分; - 学习并掌握主流的数据结构与算法概念,理解其实现细节及应用场景; - 关注官方发布的招聘信息动态,了解最新的考核重点和发展趋势[^3]。 #### 实际案例分析 一位成功获得offer的同学提到,在他的经历中特别强调了项目经验和团队协作的重要性。“除了扎实的技术功底外,我还详细介绍了自己参与过的几个重要项目,并阐述了我在其中扮演的角色以及取得的成绩。”他说,“这不仅体现了我的实践能力,也让面试官看到了我的成长潜力。” ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值