文章目錄
836. Rectangle Overlap
Problem Description
A rectangle is represented as a list [x1, y1, x2, y2], where (x1, y1) are the coordinates of its bottom-left corner, and (x2, y2) are the coordinates of its top-right corner.
Two rectangles overlap if the area of their intersection is positive. To be clear, two rectangles that only touch at the corner or edges do not overlap.
Given two (axis-aligned) rectangles, return whether they overlap.
Example 1:
Input: rec1 = [0,0,2,2], rec2 = [1,1,3,3]
Output: true
Example 2:
Input: rec1 = [0,0,1,1], rec2 = [1,0,2,1]
Output: false
Notes:
- Both rectangles rec1 and rec2 are lists of 4 integers.
- All coordinates in rectangles will be between -10^9 and 10^9.
Solution Method
去掉不可能重複的就是不重複的
bool isRectangleOverlap(int* rec1, int rec1Size, int* rec2, int rec2Size)
{
if (rec2[0] >= rec1[2] || rec1[0] >= rec2[2] || rec1[3] <= rec2[1] || rec1[1] >= rec2[3])
return false;
return true;
}
199. Binary Tree Right Side View
Problem Description
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.
Solution Method
BFS, 層次遍歷
int* rightSideView(struct TreeNode* root, int* returnSize)
{
struct TreeNode *Queue[1000];
int front = 0, rear = 0, last = 0;
int * resArr = (int *) malloc (sizeof(int) * 500);
*returnSize = 0;
if (root != NULL)
Queue[rear++] = root;
last = rear;
while (front < rear)
{
if (Queue[front]->left != NULL)
Queue[rear ++] = Queue[front]->left;
if (Queue[front]->right != NULL)
Queue[rear ++] = Queue[front]->right;
front ++;
if (front == last)
{
// 減一的原因,last=rear。rear每次賦值之後都會++
resArr[(*returnSize) ++] = Queue[last-1]->val;
last = rear;
}
}
return resArr;
}