日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【LeetCode每日一题】——LCP 44.开幕式焰火

發布時間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【LeetCode每日一题】——LCP 44.开幕式焰火 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一【題目類別】
  • 二【題目難度】
  • 三【題目編號】
  • 四【題目描述】
  • 五【題目示例】
  • 六【解題思路】
  • 七【題目提示】
  • 八【時間頻度】
  • 九【代碼實現】
  • 十【提交結果】

一【題目類別】

  • 廣度優先搜索

二【題目難度】

  • 簡單

三【題目編號】

  • 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.开幕式焰火的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。