【算法题之路】网易 小易回公司 最快时间

终于到周末啦!小易走在市区的街道上准备找朋友聚会,突然服务器发来警报,小易需要立即回公司修复这个紧急bug。假设市区是一个无限大的区域,每条街道假设坐标是(X,Y),小易当前在(0,0)街道,办公室在(gx,gy)街道上。小易周围有多个出租车打车点,小易赶去办公室有两种选择,一种就是走路去公司,另外一种就是走到一个出租车打车点,然后从打车点的位置坐出租车去公司。每次移动到相邻的街道(横向或者纵向)走路将会花费walkTime时间,打车将花费taxiTime时间。小易需要尽快赶到公司去,现在小易想知道他最快需要花费多少时间去公司。 
输入描述:


输入数据包括五行:


第一行为周围出租车打车点的个数n(1 ≤ n ≤ 50)


第二行为每个出租车打车点的横坐标tX[i] (-10000 ≤ tX[i] ≤ 10000)


第三行为每个出租车打车点的纵坐标tY[i] (-10000 ≤ tY[i] ≤ 10000)


第四行为办公室坐标gx,gy(-10000 ≤ gx,gy ≤ 10000),以空格分隔


第五行为走路时间walkTime(1 ≤ walkTime ≤ 1000)和taxiTime(1 ≤ taxiTime ≤ 1000),以空格分隔




输出描述:


输出一个整数表示,小易最快能赶到办公室的时间


输入例子:


2
-2 -2
0 -2
-4 -2
15 3


输出例子:


42


看到题目,我是这么想的,因为去公司只有两种方式,一种是步行,一种是去一个打车点打车去公司,而打车点又有好几个,所以计算每个打车点需要的时间和步行需要的时间,其中最小的时间就是最终的结果。

可以通过一个min函数进行迭代,来得到通过打车的时间的最少时间,然后再和步行时间做比较,得到最终的输出。

public class dache {

	public static void main(String[] args) {
		//从键盘获取输入
		Scanner sc  = new Scanner(System.in);
		int n = sc.nextInt();
		int[] tx = new int[n];
		int[] ty = new int[n];
		for(int i = 0; i < n; i++) {
			tx[i] = sc.nextInt();
		}
		for(int i = 0; i < n; i++) {
			ty[i] = sc.nextInt();
		}
		int gx = sc.nextInt();
		int gy = sc.nextInt();
		int walkt = sc.nextInt();
		int taxit = sc.nextInt();
		int drivet = Integer.MAX_VALUE;
		int sumwalk = walkt*(Math.abs(gx)+Math.abs(gy)); //此为步行所用时间
		//用迭代的方法得到N个打车点所用的最少时间drivet
		for(int i = 0; i < n; i ++) {
			drivet = Math.min(walkt*(Math.abs(tx[i])+Math.abs(ty[i]))+taxit*(Math.abs(gx-tx[i])+Math.abs(gy-ty[i])), drivet);
		}
		System.out.println(Math.min(sumwalk, drivet));  //打车最短时间和步行时间作比较

	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
算法提升最的方法主要是要有系统性的刷计划和方法。 以下是一些可以帮助你速提升算法能力的建议: 1. 系统性学习算法和数据结构。首先要掌握一些基本的算法和数据结构,比如排序算法、树、图、堆、队列、栈等等。可以通过读书、看视频、参加培训班等方式来学习。 2. 刷时要注重思考和总结。刷不仅仅是为了掌握某个算法或数据结构的实现方法,更重要的是要理解其思想和应用场景。刷时要注重思考,尝试自己思考算法时间和空间复杂度,并且要总结归纳每个算法或数据结构的特点和应用场景。 3. 刷时要注重分类和归纳。要把算法按照目类型和难度进行分类,然后分别针对不同类型的目制定不同的解和方法。同时要归纳每种算法时间和空间复杂度,以便在实际应用时能够速选择最优算法。 4. 刷时要注重练习和反复。做算法需要反复练习,不断加深对算法思想的理解和掌握。可以多刷一些经典目,比如 LeetCode 上的 Top 100 目,同时也可以多刷一些面试目,包括百度、阿里、腾讯、字节跳动等公司的面试目。 5. 参加算法竞赛和比赛培训。如果有时间和机会,可以参加一些算法竞赛和比赛培训,这样可以接触到更高级别的算法和更复杂的问,同时也可以和其他优秀的程序员进行交流和学习。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值