leetcode --836、199

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;
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章