生活随笔
收集整理的這篇文章主要介紹了
【LeetCode每日一题】——LCP 44.开幕式焰火
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一【題目類別】
- 二【題目難度】
- 三【題目編號】
- 四【題目描述】
- 五【題目示例】
- 六【解題思路】
- 七【題目提示】
- 八【時間頻度】
- 九【代碼實現】
- 十【提交結果】
一【題目類別】
二【題目難度】
三【題目編號】
四【題目描述】
- 「力扣挑戰賽」開幕式開始了,空中綻放了一顆二叉樹形的巨型焰火。
- 給定一棵二叉樹 root 代表焰火,節點值表示巨型焰火這一位置的顏色種類。請幫小扣計算巨型焰火有多少種不同的顏色。
五【題目示例】
-
示例 1:
- 輸入:root = [1,3,2,1,null,2]
- 輸出:3
- 解釋:焰火中有 3 個不同的顏色,值分別為 1、2、3
-
示例 2:
- 輸入:root = [3,3,3]
- 輸出:1
- 解釋:焰火中僅出現 1 個顏色,值為 3
六【解題思路】
- 這個題目沒有難度。利用BFS+Hash的思想
- 首先我們需要遍歷整棵樹,使用BFS遍歷
- 然后在遍歷的過程中將對應顏色位置+1
- 最后統計出現的顏色種類個數(Hash表中元素值不為1的個數)
- 最終返回結果即可
七【題目提示】
- 1 <= 節點個數 <= 1000
- 1 <= Node.val <= 1000
八【時間頻度】
- 時間復雜度:O(n)O(n)O(n),其中 nnn 是二叉樹的節點個數
- 空間復雜度:O(m)O(m)O(m),其中 mmm 是焰火種類的數目
九【代碼實現】
Java語言版
package BFS
;import java.util.LinkedList;
import java.util.Queue;public class l44_OpeningCeremonyFireworks
{int val
;l44_OpeningCeremonyFireworks left
;l44_OpeningCeremonyFireworks right
;public l44_OpeningCeremonyFireworks(int val
) {this.val
= val
;}public static void main(String[] args
) {l44_OpeningCeremonyFireworks root
= new l44_OpeningCeremonyFireworks(1);l44_OpeningCeremonyFireworks left
= new l44_OpeningCeremonyFireworks(3);l44_OpeningCeremonyFireworks right
= new l44_OpeningCeremonyFireworks(2);l44_OpeningCeremonyFireworks left1
= new l44_OpeningCeremonyFireworks(1);l44_OpeningCeremonyFireworks right1
= new l44_OpeningCeremonyFireworks(2);root
.left
= left
;root
.right
= right
;left
.left
= left1
;right
.left
= right1
;int res
= numColor(root
);System.out
.println("res = " + res
);}public static int numColor(l44_OpeningCeremonyFireworks root
) {int[] hash
= new int[1001];Queue<l44_OpeningCeremonyFireworks> queue
= new LinkedList<>();queue
.offer(root
);while (queue
.size() != 0) {l44_OpeningCeremonyFireworks node
= queue
.poll();hash
[node
.val
]++;if (node
.left
!= null) {queue
.offer(node
.left
);}if (node
.right
!= null) {queue
.offer(node
.right
);}}int res
= 0;for (int i
= 0; i
< 1001; i
++) {if (hash
[i
] != 0) {res
++;}}return res
;}}
C語言版
#include<stdio.h>
#include<stdlib.h>struct TreeNode {int val
;struct TreeNode *left
;struct TreeNode *right
;
};int numColor(struct TreeNode* root
)
{int* hash
= (int*)calloc(1001, sizeof(int));struct TreeNode** queue
= (struct TreeNode**)malloc(sizeof(struct TreeNode*) * 1001);int rear
= 0;int front
= 0;queue
[rear
++] = root
;while (front
!= rear
){struct TreeNode* node
= queue
[front
++];hash
[node
->val
]++;if (node
->left
!= NULL){queue
[rear
++] = node
->left
;}if (node
->right
!= NULL){queue
[rear
++] = node
->right
;}}int res
= 0;for (int i
= 0; i
< 1001; i
++){if (hash
[i
] != 0){res
++;}}return res
;
}
十【提交結果】
Java語言版
C語言版
總結
以上是生活随笔為你收集整理的【LeetCode每日一题】——LCP 44.开幕式焰火的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。