leetcode二叉樹3

404.左葉子之和

給定二叉樹的根節點?root?,返回所有左葉子之和。

示例 1:

輸入: root = [3,9,20,null,null,15,7] 
輸出: 24 
解釋: 在這個二叉樹中,有兩個左葉子,分別是 9 和 15,所以返回 24

示例?2:

輸入: root = [1]
輸出: 0

提示:

  • 節點數在?[1, 1000]?范圍內
  • -1000 <= Node.val <= 1000

解題思路

通過遞歸遍歷二叉樹,識別并累加所有左葉子節點的值。使用一個標志變量 flag 區分當前節點是否為其父節點的左子節點,只有當節點是葉子節點且是左子節點時,才將其值加到全局變量 sum 中。主函數從根節點開始遞歸,特殊處理單節點樹(根節點不算左葉子),最終返回總和。

代碼?

class Solution {int sum = 0; // 定義全局變量,用于累加所有左葉子節點的值// 輔助函數:遞歸遍歷二叉樹,計算左葉子之和// root: 當前處理的節點// flag: 標記當前節點是左子節點(1)還是右子節點(0)public void fun1(TreeNode root, int flag) {// 如果當前節點是葉子節點(無左子節點且無右子節點)if (root.left == null && root.right == null) { // 檢查是否是左葉子節點,只有 flag 為 1 時才累加if (flag == 1) {sum += root.val; // 將左葉子節點的值加到 sum 中}} else { // 如果不是葉子節點,繼續遞歸處理子節點// 如果存在左子節點,遞歸調用并標記為左子節點 (flag=1)if (root.left != null) fun1(root.left, 1);// 如果存在右子節點,遞歸調用并標記為右子節點 (flag=0)if (root.right != null) fun1(root.right, 0);}}// 主函數:返回二叉樹所有左葉子之和public int sumOfLeftLeaves(TreeNode root) {// 特殊情況:如果樹只有一個節點(根節點是葉子),返回 0if (root.left == null && root.right == null) {return 0; // 根節點本身不算左葉子}fun1(root, 0); // 從根節點開始遞歸,根節點初始標記為 0(非左子節點)return sum; // 返回累加的結果}
}

513.找樹左下角的值

給定一個二叉樹的?根節點?root,請找出該二叉樹的?最底層?最左邊?節點的值。

假設二叉樹中至少有一個節點。

示例 1:

輸入: root = [2,1,3]
輸出: 1

示例 2:

輸入: [1,2,3,4,null,5,6,null,null,7]
輸出: 7

提示:

  • 二叉樹的節點個數的范圍是?[1,104]
  • -231?<= Node.val <= 231?- 1?

?

解題思路

通過層次遍歷(BFS,廣度優先搜索)找到二叉樹的最底層,并記錄每一層的最左節點值。由于層次遍歷從左到右訪問節點,每層的第一個節點即為最左節點,而最后一層的第一個節點即為最底層的最左節點。使用隊列存儲每層節點,遍歷完所有層后,ans 保存的就是目標值。

代碼?

class Solution {public int findBottomLeftValue(TreeNode root) {int ans = root.val; // 初始化答案為根節點的值,作為最底層最左節點的候選Queue<TreeNode> queue = new ArrayDeque<>(); // 創建隊列,用于層次遍歷queue.offer(root); // 將根節點加入隊列,開始遍歷// 當隊列不為空時,繼續層次遍歷while (!queue.isEmpty()) {boolean flag = true; // 標志位,用于標記每層的最左節點int size = queue.size(); // 獲取當前層的節點數// 遍歷當前層的所有節點while (size-- > 0) {TreeNode node = new TreeNode(); // 創建一個臨時節點對象(稍顯冗余)node = queue.poll(); // 從隊列中取出當前節點,覆蓋臨時對象if (flag) ans = node.val; // 如果是該層第一個節點,更新答案為當前節點值flag = false; // 標志位置為 false,確保只記錄最左節點// 將左子節點加入隊列(如果存在)if (node.left != null) queue.offer(node.left);// 將右子節點加入隊列(如果存在)if (node.right != null) queue.offer(node.right);}}return ans; // 返回最底層最左節點的值}
}

112.路徑總和

給你二叉樹的根節點?root?和一個表示目標和的整數?targetSum?。判斷該樹中是否存在?根節點到葉子節點?的路徑,這條路徑上所有節點值相加等于目標和?targetSum?。如果存在,返回?true?;否則,返回?false?。

葉子節點?是指沒有子節點的節點。

示例 1:

輸入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22
輸出:true
解釋:等于目標和的根節點到葉節點路徑如上圖所示。

示例 2:

輸入:root = [1,2,3], targetSum = 5
輸出:false
解釋:樹中存在兩條根節點到葉子節點的路徑:
(1 --> 2): 和為 3
(1 --> 3): 和為 4
不存在 sum = 5 的根節點到葉子節點的路徑。

示例 3:

輸入:root = [], targetSum = 0
輸出:false
解釋:由于樹是空的,所以不存在根節點到葉子節點的路徑。

提示:

  • 樹中節點的數目在范圍?[0, 5000]?內
  • -1000 <= Node.val <= 1000
  • -1000 <= targetSum <= 1000

解題思路

通過深度優先搜索(DFS)遞歸遍歷二叉樹,從根節點到每個葉子節點計算路徑和。每次遞歸時累加當前節點值,并在到達葉子節點時檢查路徑和是否等于目標值 targetSum。如果存在至少一條路徑滿足條件,則返回 true,否則返回 false。主函數處理空樹情況,并啟動遞歸過程。

代碼?

class Solution {// 輔助函數:遞歸檢查是否存在從當前節點到葉子節點的路徑和等于目標值// root: 當前處理的節點// sum: 從根節點到當前節點的路徑和// targetSum: 目標和public boolean fun1(TreeNode root, int sum, int targetSum) {// 如果當前節點為空,返回 false(空路徑不滿足條件)if (root == null) {return false;}// 將當前節點值加到路徑和中sum += root.val;// 如果當前節點是葉子節點(無左子節點且無右子節點)if (root.left == null && root.right == null) {// 檢查路徑和是否等于目標和,若相等返回 trueif (sum == targetSum) return true;}// 遞歸檢查左子樹或右子樹是否存在滿足條件的路徑// 使用 || 表示只要有一條路徑滿足條件即返回 truereturn fun1(root.left, sum, targetSum) || fun1(root.right, sum, targetSum);}// 主函數:判斷是否存在從根節點到葉子節點的路徑和等于目標值public boolean hasPathSum(TreeNode root, int targetSum) {// 特殊情況:如果樹為空,返回 falseif (root == null) {return false;}// 調用輔助函數,從根節點開始,初始路徑和為 0return fun1(root, 0, targetSum);}
}

113.路徑總和II

給你二叉樹的根節點?root?和一個整數目標和?targetSum?,找出所有?從根節點到葉子節點?路徑總和等于給定目標和的路徑。

葉子節點?是指沒有子節點的節點。

示例 1:

輸入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22
輸出:[[5,4,11,2],[5,8,4,5]]

示例 2:

輸入:root = [1,2,3], targetSum = 5
輸出:[]

示例 3:

輸入:root = [1,2], targetSum = 0
輸出:[]

提示:

  • 樹中節點總數在范圍?[0, 5000]?內
  • -1000 <= Node.val <= 1000
  • -1000 <= targetSum <= 1000

解題思路

通過深度優先搜索(DFS)遞歸遍歷二叉樹,從根節點到每個葉子節點,記錄路徑并計算路徑和。使用一個臨時列表 list 保存當前路徑,在到達葉子節點時檢查路徑和是否等于目標值 targetSum,若滿足則將路徑副本加入結果集 ans。通過回溯(移除當前節點值)確保路徑記錄的正確性,最終返回所有滿足條件的路徑。

代碼?

class Solution {// 定義全局變量,用于存儲所有滿足條件的路徑List<List<Integer>> ans = new ArrayList<>();// 輔助函數:遞歸遍歷二叉樹,尋找從根到葉子路徑和等于目標值的路徑// root: 當前處理的節點// sum: 從根節點到當前節點的路徑和// targetSum: 目標和// list: 當前路徑的臨時記錄public void fun1(TreeNode root, int sum, int targetSum, ArrayList list) {// 如果當前節點為空,直接返回(空路徑不處理)if (root == null) {return;}// 將當前節點值加入臨時路徑list.add(root.val);// 更新路徑和sum += root.val;// 如果當前節點是葉子節點(無左子節點且無右子節點)if (root.left == null && root.right == null) {// 檢查路徑和是否等于目標和if (sum == targetSum) {// 如果滿足條件,將當前路徑的副本加入結果集ans.add(new ArrayList<>(list));}} else {// 如果不是葉子節點,繼續遞歸遍歷左子樹fun1(root.left, sum, targetSum, list);// 遞歸遍歷右子樹fun1(root.right, sum, targetSum, list);}// 回溯:移除當前節點值,以便嘗試其他路徑list.remove(list.size() - 1);}// 主函數:返回所有從根到葉子路徑和等于目標值的路徑public List<List<Integer>> pathSum(TreeNode root, int targetSum) {// 創建臨時列表,用于記錄當前路徑ArrayList<Integer> list = new ArrayList<>();// 調用輔助函數開始遞歸fun1(root, 0, targetSum, list);// 返回結果集return ans;}
}

106.從中序與后序遍歷構造二叉樹

給定兩個整數數組?inorder?和?postorder?,其中?inorder?是二叉樹的中序遍歷,?postorder?是同一棵樹的后序遍歷,請你構造并返回這顆?二叉樹?。

示例 1:

輸入:inorder = [9,3,15,20,7], postorder = [9,15,7,20,3]
輸出:[3,9,20,null,null,15,7]

示例 2:

輸入:inorder = [-1], postorder = [-1]
輸出:[-1]

提示:

  • 1 <= inorder.length <= 3000
  • postorder.length == inorder.length
  • -3000 <= inorder[i], postorder[i] <= 3000
  • inorder?和?postorder?都由?不同?的值組成
  • postorder?中每一個值都在?inorder?中
  • inorder?保證是樹的中序遍歷
  • postorder?保證是樹的后序遍歷

解題思路

利用后序遍歷的最后一個元素作為根節點,通過中序遍歷找到根節點的左右子樹范圍,遞歸構建二叉樹。為了避免每次線性查找根節點在中序遍歷中的位置,使用哈希表預先存儲值到索引的映射,從而將查找時間從 O(n) 優化到 O(1)。通過遞歸劃分數組范圍,最終構造出完整的二叉樹。

代碼

class Solution {// 定義哈希表,用于快速查找中序遍歷中值的索引private HashMap<Integer, Integer> inorderMap;// 輔助函數:根據中序和后序遍歷遞歸構建二叉樹// inorder: 中序遍歷數組// postorder: 后序遍歷數組// inStart, inEnd: 中序遍歷的當前范圍// postStart, postEnd: 后序遍歷的當前范圍private TreeNode buildTreeHelper(int[] inorder, int[] postorder, int inStart, int inEnd, int postStart, int postEnd) {// 如果當前范圍無效,返回 null(無子樹)if (inStart > inEnd) {return null;}// 后序遍歷的最后一個元素是當前子樹的根節點int rootVal = postorder[postEnd];TreeNode root = new TreeNode(rootVal);// 在中序遍歷中找到根節點的索引int rootIndex = inorderMap.get(rootVal);// 計算左子樹的節點數int leftSize = rootIndex - inStart;// 遞歸構建左子樹root.left = buildTreeHelper(inorder, postorder, inStart, rootIndex - 1, postStart, postStart + leftSize - 1);// 遞歸構建右子樹root.right = buildTreeHelper(inorder, postorder, rootIndex + 1, inEnd, postStart + leftSize, postEnd - 1);return root;}// 主函數:根據中序和后序遍歷構造二叉樹public TreeNode buildTree(int[] inorder, int[] postorder) {// 初始化哈希表,存儲中序遍歷值到索引的映射inorderMap = new HashMap<>();for (int i = 0; i < inorder.length; i++) {inorderMap.put(inorder[i], i);}// 調用輔助函數,初始范圍為整個數組return buildTreeHelper(inorder, postorder, 0, inorder.length - 1, 0, postorder.length - 1);}
}// TreeNode 定義(假設已提供)
class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int val) {this.val = val;}
}

105.從前序與中序遍歷序列構造二叉樹

給定兩個整數數組?preorder?和?inorder?,其中?preorder?是二叉樹的先序遍歷,?inorder?是同一棵樹的中序遍歷,請構造二叉樹并返回其根節點。

示例 1:

輸入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]
輸出: [3,9,20,null,null,15,7]

示例 2:

輸入: preorder = [-1], inorder = [-1]
輸出: [-1]

提示:

  • 1 <= preorder.length <= 3000
  • inorder.length == preorder.length
  • -3000 <= preorder[i], inorder[i] <= 3000
  • preorder?和?inorder?均?無重復?元素
  • inorder?均出現在?preorder
  • preorder?保證?為二叉樹的前序遍歷序列
  • inorder?保證?為二叉樹的中序遍歷序列

?

解題思路

利用前序遍歷的第一個元素作為根節點,通過中序遍歷找到根節點的左右子樹范圍,遞歸構建二叉樹。為了避免每次線性查找根節點在中序遍歷中的位置,使用哈希表預先存儲值到索引的映射,從而將查找時間從 O(n) 優化到 O(1)。通過遞歸劃分數組范圍,最終構造出完整的二叉樹。

代碼?

class Solution {// 定義哈希表,用于快速查找中序遍歷中值的索引private HashMap<Integer, Integer> inorderMap;// 輔助函數:根據前序和中序遍歷遞歸構建二叉樹// inorder: 中序遍歷數組// preorder: 前序遍歷數組// inStart, inEnd: 中序遍歷的當前范圍// preStart, preEnd: 前序遍歷的當前范圍public TreeNode fun1(int[] inorder, int[] preorder, int inStart, int inEnd, int preStart, int preEnd) {// 如果當前范圍無效(中序或前序范圍不合法),返回 nullif (inEnd < inStart || preStart > preEnd) return null;// 前序遍歷的第一個元素是當前子樹的根節點TreeNode root = new TreeNode(preorder[preStart]);// 在中序遍歷中找到根節點的索引(使用哈希表快速查找)int mid = inorderMap.get(root.val);// 計算左子樹的節點數int leftSize = mid - inStart;// 遞歸構建左子樹// 左子樹的中序范圍: [inStart, mid - 1]// 左子樹的前序范圍: [preStart + 1, preStart + leftSize]root.left = fun1(inorder, preorder, inStart, mid - 1, preStart + 1, preStart + leftSize);// 遞歸構建右子樹// 右子樹的中序范圍: [mid + 1, inEnd]// 右子樹的前序范圍: [preStart + leftSize + 1, preEnd]root.right = fun1(inorder, preorder, mid + 1, inEnd, preStart + leftSize + 1, preEnd);// 返回當前子樹的根節點return root;}// 主函數:根據前序和中序遍歷構造二叉樹public TreeNode buildTree(int[] preorder, int[] inorder) {// 如果輸入數組為空或長度為 0,返回 nullif (inorder == null || inorder.length == 0) return null;// 初始化哈希表,存儲中序遍歷值到索引的映射inorderMap = new HashMap<>();for (int i = 0; i < inorder.length; i++) {inorderMap.put(inorder[i], i);}// 調用輔助函數,初始范圍為整個數組return fun1(inorder, preorder, 0, inorder.length - 1, 0, preorder.length - 1);}
}// TreeNode 定義(假設已提供)
class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int val) {this.val = val;}
}

?654.最大二叉樹

給定一個不重復的整數數組?nums?。?最大二叉樹?可以用下面的算法從?nums?遞歸地構建:

  1. 創建一個根節點,其值為?nums?中的最大值。
  2. 遞歸地在最大值?左邊?的?子數組前綴上?構建左子樹。
  3. 遞歸地在最大值?右邊?的?子數組后綴上?構建右子樹。

返回?nums?構建的?最大二叉樹?

示例 1:

輸入:nums = [3,2,1,6,0,5]
輸出:[6,3,5,null,2,0,null,null,1]
解釋:遞歸調用如下所示:
- [3,2,1,6,0,5] 中的最大值是 6 ,左邊部分是 [3,2,1] ,右邊部分是 [0,5] 。- [3,2,1] 中的最大值是 3 ,左邊部分是 [] ,右邊部分是 [2,1] 。- 空數組,無子節點。- [2,1] 中的最大值是 2 ,左邊部分是 [] ,右邊部分是 [1] 。- 空數組,無子節點。- 只有一個元素,所以子節點是一個值為 1 的節點。- [0,5] 中的最大值是 5 ,左邊部分是 [0] ,右邊部分是 [] 。- 只有一個元素,所以子節點是一個值為 0 的節點。- 空數組,無子節點。

示例 2:

輸入:nums = [3,2,1]
輸出:[3,null,2,null,1]

提示:

  • 1 <= nums.length <= 1000
  • 0 <= nums[i] <= 1000
  • nums?中的所有整數?互不相同

解題思路

通過遞歸分治的方式構建最大二叉樹。每次在當前子數組范圍內找到最大值作為根節點,然后將數組分為左子數組和右子數組,分別遞歸構建左子樹和右子樹。使用索引范圍控制遞歸,確保正確劃分子樹,最終返回構造好的二叉樹根節點。

代碼?

class Solution {// 輔助函數:遞歸構建最大二叉樹// nums: 輸入的整數數組// start: 當前子數組的起始索引// end: 當前子數組的結束索引public TreeNode fun1(int[] nums, int start, int end) {// 如果當前范圍無效(起始索引大于結束索引),返回 nullif (start > end) return null;// 創建當前子樹的根節點TreeNode root = new TreeNode();int max = 0;    // 記錄當前范圍內的最大值int index = 0;  // 記錄最大值的索引// 遍歷當前范圍,找到最大值及其索引for (int i = start; i <= end; i++) {if (max <= nums[i]) { // 使用 <= 確保更新到最后一個最大值index = i;        // 更新最大值索引max = nums[i];    // 更新最大值}}// 設置根節點值為最大值root.val = max;// 遞歸構建左子樹(最大值左邊的子數組)root.left = fun1(nums, start, index - 1);// 遞歸構建右子樹(最大值右邊的子數組)root.right = fun1(nums, index + 1, end);// 返回當前子樹的根節點return root;}// 主函數:根據數組構造最大二叉樹public TreeNode constructMaximumBinaryTree(int[] nums) {// 特殊情況:如果數組長度為 1,直接返回單節點樹if (nums.length == 1) return new TreeNode(nums[0]);// 調用輔助函數,初始范圍為整個數組return fun1(nums, 0, nums.length - 1);}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/73313.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/73313.shtml
英文地址,請注明出處:http://en.pswp.cn/web/73313.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

QT網絡通信的接口與使用

文章目錄 前言1.服務端實現流程1.1步驟 1&#xff1a;創建 QTcpServer 并監聽端口1.2步驟 2&#xff1a;處理新連接請求1.3步驟 3&#xff1a;接收客戶端數據1.4步驟 4&#xff1a;處理客戶端斷開 2.客戶端實現流程2.1步驟 1&#xff1a;創建 QTcpSocket 并連接服務器2.2步驟 2…

華為OD機試2025A卷七日集訓第1期 - 按算法分類,由易到難,循序漸進,玩轉OD(Python/JS/C/C++)

目錄 一、適合人群二、本期訓練時間三、如何參加四、7日集訓第1期五、精心挑選21道高頻100分經典題目&#xff0c;作為入門。第1天、邏輯分析第2天、邏輯分析第3天、邏輯分析第4天、邏輯分析第5天、雙指針第6天、二叉樹第7天、回溯 六、集訓總結六、國內直接使用最新GPT-4.5、滿…

Qt 重入和線程安全

重入和線程安全 在整個文檔中&#xff0c;"重入"和 "線程安全 "這兩個術語被用來標記類和函數&#xff0c;以表明它們在多線程應用程序中的使用方式&#xff1a; 線程安全函數可以同時被多個線程調用&#xff0c;即使調用使用的是共享數據&#xff0c;因…

Elasticsearch:構建 AI 驅動的搜索體驗

Elasticsearch 介紹 當你開始使用 Elastic 時&#xff0c;你將使用 Elasticsearch Relevance Engine?&#xff08;ESRE&#xff09;&#xff0c;它專為 AI 搜索應用程序提供支持。借助 ESRE&#xff0c;你可以利用一整套開發者工具&#xff0c;包括 Elastic 的文本搜索、向量…

鴻蒙生態開發

鴻蒙生態開發概述 鴻蒙生態是華為基于開源鴻蒙&#xff08;OpenHarmony&#xff09;構建的分布式操作系統生態&#xff0c;旨在通過開放共享的模式連接智能終端設備、操作系統和應用服務&#xff0c;覆蓋消費電子、工業物聯網、智能家居等多個領域。以下從定義與架構、核心技術…

JVM如何處理Java中的精度轉換: 從源碼到字節碼

你好&#xff0c;我是 shengjk1&#xff0c;多年大廠經驗&#xff0c;努力構建 通俗易懂的、好玩的編程語言教程。 歡迎關注&#xff01;你會有如下收益&#xff1a; 了解大廠經驗擁有和大廠相匹配的技術等 希望看什么&#xff0c;評論或者私信告訴我&#xff01; 文章目錄 一…

vue-next-admin修改配置指南

官方文檔地址&#xff1a;vue-next-admin 1.如何開啟側邊欄logo 在scr-layout-navbars-topBar-setings.vue中添加 getThemeConfig.value.isShowLogo true; 設置為true即可默認打開 2.修改側邊欄頂部的logo與文字 先把想要的圖標存到我的項目然后下載 然后把后面的幾個文件拉…

gin學習

gin學習筆記&#xff0c;不僅包含了基本的增刪查改外&#xff0c;還包括參數傳遞&#xff0c;上傳下載&#xff0c;模版、session與中間件等&#xff0c;方便收藏自習可用 文章目錄 獲得個請求get打印字符串get請求xmlget請求跳轉http方法路由可以通過Context的Param方法來獲取…

Flutter運行錯誤:UG! exception in phase ‘semantic analysis‘

最近在Mac Mini M4上通過Android Studio導入Flutter項目并運行&#xff0c;結果一直跑不起來&#xff0c;錯誤日志如下&#xff1a; 執行命令查看版本信息&#xff1a; flutter doctor --verbose通過輸出信息Java version OpenJDK Runtime Environment (build 21.0.41242208…

【計算機網絡運輸層詳解】

文章目錄 一、前言二、運輸層的功能1. 端到端通信2. 復用與分用3. 差錯檢測4. 流量控制5. 擁塞控制 三、運輸層協議&#xff1a;TCP 和 UDP1. TCP&#xff1a;面向連接的可靠傳輸協議2. UDP&#xff1a;無連接的傳輸協議 四、端口號與進程通信1. 端口號分類2. 端口通信模型 五、…

51單片機和STM32 入門分析

51單片機和STM32是嵌入式開發中兩種主流的微控制器&#xff0c;它們在架構、性能、應用場景等方面存在顯著差異。以下是兩者的對比分析及選擇建議&#xff1a; 1. 51單片機與STM32的定義與特點 51單片機 定義&#xff1a;基于Intel 8051內核的8位微控制器&#xff0c;結構簡單…

開源視覺語言模型MiniMax-VL-01:動態分辨率+4M超長文本,性能比肩GPT-4o

在人工智能領域&#xff0c;構建能夠像人類一樣理解、思考和行動的智能體&#xff08;AI Agent&#xff09;一直是研究人員的終極目標之一。而實現這一目標的關鍵在于模型是否具備足夠強大的感知能力、記憶能力和推理能力。近期&#xff0c;國內人工智能公司MiniMax重磅開源了其…

excel 列單元格合并(合并列相同行)

代碼 首先自定義注解CellMerge&#xff0c;用于標記哪些屬性需要合并&#xff0c;哪個是主鍵**&#xff08;這里做了一個優化&#xff0c;可以標記多個主鍵&#xff09;** import org.dromara.common.excel.core.CellMergeStrategy;import java.lang.annotation.*;/*** excel…

flowable適配達夢7 (2.1)

經過第一版的問題解決&#xff0c;后端項目可以啟動&#xff0c;前端頁面也集成進去。 前端在流程設計頁面報錯 之后發現主要是組件中modelerStore這個值沒有 解決方法:在data增加對象 給component/process/designer.vue 中涉及到的每個子組件傳入 :modelerStore“modeler…

Prometheus Exporter系列-Mysql_Exporter一鍵部署

新項目舊項目都需要給研發配置mysql監控&#xff0c;這里mysql監控對應aws 阿里云 騰訊云 華為云的云mysql產品或開源自建mysql。 exporter安裝雖然簡單&#xff0c;經常手動操作不免讓人心煩&#xff0c;一鍵完成省去繁瑣的常規操作。 配置信息對的情況下測試多次都可以正常安…

2025年移動端開發性能優化實踐與趨勢分析

啟動速度優化 本質&#xff1a;縮短首次可見幀渲染時間。 方法&#xff1a; iOS&#xff1a;利用Core ML本地模型輕量化部署&#xff0c;減少云端等待。Android&#xff1a;強制啟用SplashScreen API&#xff0c;通過setKeepOnScreenCondition控制動畫時長。冷啟動需將耗時操…

【MySQL篇】DEPENDENT SUBQUERY(依賴性子查詢)優化:從百秒到秒級響應的四種優化辦法

&#x1f4ab;《博主介紹》&#xff1a;?又是一天沒白過&#xff0c;我是奈斯&#xff0c;從事IT領域? &#x1f4ab;《擅長領域》&#xff1a;??擅長阿里云AnalyticDB for MySQL(分布式數據倉庫)、Oracle、MySQL、Linux、prometheus監控&#xff1b;并對SQLserver、NoSQL(…

全文 - MLIR Toy Tutorial Chapter 1: Toy Language and AST

Toy 語言 本教程&#xff0c;將會借助一個玩具語言來講解&#xff0c;這個語言我們稱其為 Toy。Toy 是一個基于張量的語言&#xff0c;它允許你定義函數&#xff0c;執行一些數學計算&#xff0c;并且打印結果。做這樣的設定&#xff0c;是因為我們希望讓教程保持簡明&#xff…

排序復習_代碼純享

頭文件 #pragma once #include<iostream> #include<vector> #include<utility> using std::vector; using std::cout; using std::cin; using std::endl; using std::swap;//插入排序 //1、直接插入排序&#xff08;穩定&#xff09; void InsertSort(vecto…

CSS語言的雙向鏈表

CSS語言的雙向鏈表 引言 在計算機科學中&#xff0c;數據結構是一個極為重要的概念&#xff0c;而鏈表則是最常見的數據結構之一。鏈表可以分為單向鏈表和雙向鏈表&#xff0c;其中雙向鏈表因其靈活性和高效性而受到廣泛應用。在前端開發的領域&#xff0c;尤其是CSS&#xf…