第一题:矩形面积(回顾)
给你 二维 平面上两个 由直线构成且边与坐标轴平行/垂直 的矩形,请你计算并返回两个矩形覆盖的总面积。
每个矩形由其 左下 顶点和 右上 顶点坐标表示:
第一个矩形由其左下顶点 (ax1, ay1) 和右上顶点 (ax2, ay2) 定义。
第二个矩形由其左下顶点 (bx1, by1) 和右上顶点 (bx2, by2) 定义。

输入:ax1 = -3, ay1 = 0, ax2 = 3, ay2 = 4, bx1 = 0, by1 = -1, bx2 = 9, by2 = 2
输出:45
示例 2:
输入:ax1 = -2, ay1 = -2, ax2 = 2, ay2 = 2, bx1 = -2, by1 = -2, bx2 = 2, by2 = 2
输出:16
提示:
-104 <= ax1, ay1, ax2, ay2, bx1, by1, bx2, by2 <= 104
思路:
1、首先明确计算的是两个矩形覆盖的总面积
2、其次给定的条件为四个顶点的坐标,即可通过数学的计算方法
3、分析后可知有俩种情况:一、两个矩形没有重叠即两个矩形的总面积即总面积;二、两个矩形重叠即可通过算出两个矩形的总面积后再减去重叠的面积;
所以无论如何都得算出两个矩形的面积,而题目的重点在于算重叠面积!!!
重叠面积(通过画图可以知道)长:可通过四个点中x判断算出;宽:可通过四个点中y判断算出;
代码实现:
class Solution {
public int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2){
int area1 =(ax2-ax1)*(ay2-ay1);
int area2=(bx2-bx1)*(by2-by1);
int overchang =Math.min(ax2,bx2)-Math.max(ax1,bx1);
int overkuan =Math.min(ay2,by2)-Math.max(ay1,by1);
int overarea=Math.max(overchang,0)*Math.max(overkuan,0);
int zongarea = area1+area2-overarea;
return zongarea;
}
}
第二题:旅行终点站(回顾)
给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i] = [cityAi, cityBi] 表示该线路将会从 cityAi 直接前往 cityBi 。
请你找出这次旅行的终点站,即没有任何可以通往其他城市的线路的城市。
题目数据保证线路图会形成一条不存在循环的线路,因此恰有一个旅行终点站。
示例 1:
输入:paths = [["London","New York"],["New York","Lima"],["Lima","Sao Paulo"]]
输出:"Sao Paulo"
解释:从 "London" 出发,最后抵达终点站 "Sao Paulo" 。本次旅行的路线是 "London" -> "New York" -> "Lima" -> "Sao Paulo" 。
示例 2:
输入:paths = [["B","C"],["D","B"],["C","A"]]
输出:"A"
解释:所有可能的线路是:
"D" -> "B" -> "C" -> "A".
"B" -> "C" -> "A".
"C" -> "A".
"A".
显然,旅行终点站是 "A" 。
示例 3:
输入:paths = [["A","Z"]]
输出:"Z"
提示:
1 <= paths.length <= 100
paths[i].length == 2
1 <= cityAi.length, cityBi.length <= 10
cityAi != cityBi
所有字符串均由大小写英文字母和空格字符组成。
思路:
1、首先明确要输出的为旅行的终点站是一个单元,且输入的是List<List<String>> paths一个集合组;
2、其次通过List来存储经历过的城市,即可通过判断最后一个地方是否与之前经过的城市相同,倘若不同则返回!
代码实现:
请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。
题目数据保证需要删除的节点 不是末尾节点 。
示例 1:

输入:head = [4,5,1,9], node = 5
输出:[4,1,9]
解释:指定链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9
示例 2:
输入:head = [4,5,1,9], node = 1
输出:[4,5,9]
解释:指定链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9
示例 3:
输入:head = [1,2,3,4], node = 3
输出:[1,2,4]
示例 4:
输入:head = [0,1], node = 0
输出:[1]
示例 5:
输入:head = [-3,5,-99], node = -3
输出:[5,-99]
提示:
链表中节点的数目范围是 [2, 1000]
-1000 <= Node.val <= 1000
链表中每个节点的值都是唯一的
需要删除的节点 node 是 链表中的一个有效节点 ,且 不是末尾节点
思路:
1、明确输出的是删除结点后的链表
2、删除操作就是直接Node.next=Node.next.next;
3、一开始写没注意到值Val所以导致错误;得先明确哪一个结点的值指向这一结点的下一个结点的值!最后才能实现只访问该节点的删除操作
代码实现:
浙公网安备 33010602011771号