836题目描述:
矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。矩形的上下边平行于 x 轴,左右边平行于 y 轴。
如果相交的面积为 正 ,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。
给出两个矩形 rec1 和 rec2 。如果它们重叠,返回 true;否则,返回 false 。
解析:
主要是注意上下左右四个边界,边界找到了,也就好理解了
Java:
public boolean isRectangleOverlap(int[] rec1, int[] rec2) {
if(rec1[2] <= rec2[0] || rec1[0] >= rec2[2] || rec1[1] >= rec2[3] || rec1[3] <= rec2[1]) {
return false;
} else {
return true;
}
}
JavaScript:
var isRectangleOverlap = function(rec1, rec2) {
if(rec1[2] <= rec2[0] || rec1[0] >= rec2[2] || rec1[1] >= rec2[3] || rec1[3] <= rec2[1]) {
return false;
} else {
return true;
}
};
876题目描述:
给定一个头结点为 head 的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
解析:
快慢指针方法
Java:
public ListNode middleNode(ListNode head) {
ListNode fast = head;
ListNode slow = head;
while(fast != null && fast.next != null) {
slow = slow.next;
fast = fast.next.next;
}
return slow;
}
JavaScript:
var middleNode = function(head) {
let fast = head;
let slow = head;
while(fast !== null && fast.next !== null) {
slow = slow.next;
fast = fast.next.next;
}
return slow;
};