啊啊啊啊啊啊啊啊code

前序遍歷和中序遍歷構建二叉樹

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public TreeNode buildTree(int[] preorder, int[] inorder) {int preLen = preorder.length;int inLen = inorder.length;if (preLen != inLen)return null;// 創建一個哈希表用來存儲中序遍歷的信息,鍵為中序遍歷的值,值為中序遍歷的值的下標信息HashMap<Integer, Integer> map = new HashMap<>(preLen);for (int i = 0; i < preLen; i++)map.put(inorder[i], i);return buildTree(preorder, 0, preLen - 1,map, 0, inLen - 1);}private TreeNode buildTree(int[] preorder, int preLeft, int preRight,Map<Integer, Integer> map, int inLeft, int inRight) {if (preLeft > preRight || inLeft > inRight)return null;// 創建根節點信息int rootVal = preorder[preLeft];TreeNode root = new TreeNode(rootVal);int pIndex = map.get(rootVal);// 得到根在中序遍歷中的下標信息// pIndex-1-inLeft = x-(preLeft+1)int x = pIndex - inLeft + preLeft;root.left = buildTree(preorder, preLeft + 1, x,map, inLeft, pIndex - 1);root.right = buildTree(preorder, x + 1, preRight,map, pIndex + 1, inRight);return root;}
}

旋轉鏈表右移

class Solution {public ListNode rotateRight(ListNode head, int k) {if (k == 0 || head == null || head.next == null)return head;// 找到鏈表長度和末尾結點 int len = 1;ListNode iter = head;while (iter.next != null) {len++;iter = iter.next;}// 將鏈表團成環iter.next = head;// 找到新鏈表的末尾位置所在的下標int n = len - k % len;while (n-- > 0) {iter = iter.next;}// 斷開鏈表ListNode newhead = iter.next;iter.next = null;return newhead;}
}

鏈表合并

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {ListNode temp = new ListNode(-1);ListNode prev = temp;   // 指向當前較小的節點while (list1 != null && list2 != null) {if (list1.val <= list2.val) {prev.next = list1;list1 = list1.next;} else {prev.next = list2;list2 = list2.next;}prev = prev.next;  // 更新指針}// 合并后list1和list2最多會有一個沒合并完,直接將鏈表的末尾指針指向未完成合并的鏈表即可prev.next = (list1 == null ? list2 : list1);return temp.next;   // temp第一個節點無效,所以從next返回}}
/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode mergeKLists(ListNode[] lists) {return mergeKLists(lists, 0, lists.length);}// 合并從lists[i]到lists[j-1]的數組private ListNode mergeKLists(ListNode[] lists, int i, int j) {int m = j - i;// 合并的全體范圍,后續用于折半if (m == 0)return null;if(m==1)return lists[i];ListNode mergeKListsLeft = mergeKLists(lists, i, i + m / 2);  // 左邊需要合并的有序ListNode mergeKListsRight = mergeKLists(lists, i + m / 2, j); // 右邊需要合并的有序return mergeTwo(mergeKListsLeft, mergeKListsRight); // 將最終結果合并}private ListNode mergeTwo(ListNode list1, ListNode list2) {ListNode dummp = new ListNode(-1);ListNode prev = dummp;while (list1 != null && list2 != null) {if (list1.val <= list2.val) {prev.next = list1;list1 = list1.next;} else {prev.next = list2;list2 = list2.next;}prev = prev.next;}if (list1!= null)prev.next = list1;if (list2!= null)prev.next = list2;return dummp.next;}
}

K個一組翻折鏈表

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode reverseKGroup(ListNode head, int k) {// 求解鏈表的長度ListNode p = new ListNode(-1, head);int len=0;while (p.next != null) {len++;p = p.next;}ListNode dummy = new ListNode(0, head);ListNode p0 = dummy;ListNode pre = null;ListNode curr = head;while (len >= k) {// 每k組進行翻轉for (int i = 0; i < k; i++) {ListNode next = curr.next;curr.next = pre;pre = curr;curr = next;}ListNode nxt = p0.next;p0.next.next = curr;p0.next = pre;p0 = nxt;len = len - k;}return dummy.next;}
}

合并區間

class Solution {public int[][] merge(int[][] intervals) {// 按照二維數組的第一位進行排序Arrays.sort(intervals, (p, q) -> p[0] - q[0]);// 創建一個可變數組作為結果值返回ArrayList<int[]> ans = new ArrayList<>();// 遍歷排序好的每一個數組for (int[] p : intervals) {int m = ans.size();// 當前遍歷到的數組的最小值<=結果數組中最后一個數組的最大值,表示有重合if (m > 0 && p[0] <= ans.get(m - 1)[1]) {ans.get(m - 1)[1] = Math.max(ans.get(m - 1)[1], p[1]);} elseans.add(p);}return ans.toArray(new int[ans.size()][]);}
}

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

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

相關文章

【算法 day06】LeetCode 454.四數相加II | 15. 三數之和 | 18. 四數之和

454.四數相加II 題目鏈接 | 文檔講解 |視頻講解 : 鏈接 1.思路&#xff1a; 0.定義一個count&#xff0c;計算最終出現的次數 1.先遍歷nums1和nums2,求出兩者的和&#xff0c;map的key是和&#xff0c;value是出現的次數 2.再遍歷nums3和nums4&#xff0c;求出0-兩者的和 3…

【項目實訓】【項目博客#09】HarmonySmartCodingSystem系統后端智能API檢索與代碼助手實現(6.2-6.15)

【項目實訓】【項目博客#09】HarmonySmartCodingSystem系統后端智能API檢索與代碼助手實現&#xff08;6.2-6.15&#xff09; 文章目錄 【項目實訓】【項目博客#09】HarmonySmartCodingSystem系統后端智能API檢索與代碼助手實現&#xff08;6.2-6.15&#xff09;項目博客概述一…

【JVM】- 類加載與字節碼結構3

類加載階段 1. 加載 加載&#xff1a;將類的字節碼載入方法區中&#xff0c;內部采用C的instanceKlass描述java類。如果這個類的父類還沒加載&#xff0c;則先加載父類加載和鏈接可能是交替運行的 通過全限定名獲取字節碼 從文件系統&#xff08;.class 文件&#xff09;、JA…

Qt藍圖式技能編輯器狀態機模塊設計與實現

設計概述 這個模塊是一個基于Qt的藍圖式技能編輯器狀態機&#xff0c;主要用于游戲開發中的技能狀態管理。核心功能包括&#xff1a; 狀態節點&#xff08;開始、結束、普通狀態&#xff09;的可視化 狀態間連線的繪制與管理 狀態轉換邏輯的可視化編輯 動作選擇與配置 核…

Unity AR識別物體的內容語音讀取+使用說明功能

因之前一直在開發項目&#xff0c;斷斷續續寫了一點博客&#xff0c;最后統一寫了一下博客記錄學習內容。 可以看到我的工作一直在進行。 目錄 一、識別內容語音讀取 二、點擊齒輪按鈕彈出使用說明界面 開發步驟 1. 創建齒輪按鈕 UI 2. 創建使用說明面板 UI 3. 編寫控制…

Unable to start embedded Tomcat

通常是由于xml文件配置錯誤導致 1. mapper 指向錯誤 <resultMap id"Waybill" type"c.Waybill"> 2. 字段類型錯誤 <result column"wstatus" property"stus" javaType"TINYINT"/>TINYINT 是數據庫類型<resu…

Mac電腦 充電限制保護工具 AlDente Pro

AlDente Pro一款充電限制保護工具&#xff0c;是可以限制最大充電百分比來保護電池的工具。 鋰離子和聚合物電池&#xff08;如 MacBook 中的電池&#xff09;在40&#xff05; 至 80&#xff05; 之間運行時&#xff0c;使用壽命最長。 始終將電池電量保持在 100&#xff05…

KungfuBot——基于物理約束和自適應運動追蹤的人形全身控制PBHC,用于學習打拳或跳舞(即RL下的動作模仿和運控)

前言 昨天618&#xff0c;我司「七月在線」同事朝陽為主力&#xff0c;我打雜&#xff0c;折騰了整整一天&#xff0c;終于可以通過VR搖操宇樹G1了——當然&#xff0c;搖操是為了做訓練數據的采集&#xff0c;從而方便 下一步的模型(策略)訓練&#xff0c;最終實現機器人自主…

Kafka多副本機制

副本和副本因子 Kafka 會為每個 Partition 創建多個副本。這些副本分布在不同的 Broker 上。副本確保了數據的冗余存儲&#xff0c;即使某個 Broker 宕機或失效&#xff0c;其他副本可以繼續提供服務。 副本因子指的是每個 Partition 有多少個副本。副本因子的設置決定了一個…

Vue3類似百度風格搜索框組件

Vue3百度風格搜索框組件&#xff0c;使用vue3進行設計&#xff0c;亦有vue3TS的版本。 vue3組件如下&#xff1a; <template><!-- 搜索組件容器 --><div class"search-container"><!-- 百度Logo - 新樣式 --><div class"logo-conta…

智凈未來:華為智選IAM以科技巧思優化家庭健康飲水體驗

在中國家庭中&#xff0c;凈水器早已成為廚房標配&#xff0c;但傳統凈水設備的使用體驗卻遠未達到理想狀態。根據《2023年中國家庭凈水器使用調研報告》顯示&#xff0c;超過65%的用戶對傳統凈水器存在不滿&#xff0c;主要痛點集中在功能單一、操作復雜、維護麻煩、噪音大、廢…

細說STM32單片機SPI-Flash芯片的FatFS移植

目錄 一、SPI-Flash芯片硬件電路 二、CubeMX項目基礎設置 1、RCC、SYS、Code Generator、USART6、NVIC 2、RTC 3、SPI2 4、GPIO 5、FatFS模式 6、FatFS參數設置概述 &#xff08;1&#xff09;Version組 &#xff08;2&#xff09;Function Parameters組 1&#x…

ubuntu 22.04 安裝部署logstash 7.10.0詳細教程

安裝部署logstash 7.10.0詳細教程 一、下載并安裝二、新建配置文件三、賦權文件權限四、檢測文件grok語法是否異常五、啟動服務六、安裝啟動常見問題 【背景】 整個elk安裝是基于ubuntu 22.04和jdk 11環境。logstash采用 *.deb方式安裝&#xff0c;需要服務器能聯網。ubuntu 22…

JVM對象創建與內存分配機制深度剖析

對象創建的主要流程 類加載檢查 在創建對象之前&#xff0c;JVM 首先會檢查該類是否已經加載、解析并初始化&#xff1a; 如果沒有&#xff0c;則會通過類加載機制加載類元信息&#xff08;Class Metadata&#xff09;到方法區。 這個過程包括&#xff1a;加載&#xff08;load…

Navicat 技術指引 | TiDB 的 AI 查詢交互功能

目前&#xff0c;Navicat 兩款工具支持對 TiDB 數據庫的管理開發功能&#xff1a;一款是旗艦款 Navicat Premium&#xff0c;另一款是其輕量化功能的 Navicat Premium Lite&#xff08;官方輕量級免費版&#xff09;。Navicat 自版本 17.1 開始支持 TiDB 7。它支持的系統有 Win…

以list為輸入條件,查詢數據庫表,java中的mapper層和mybatis層應該怎么寫?

根據一個 List 中的兩個字段 rangeCode 和 unitcd&#xff0c;查詢數據庫表 model_engineering_spatial_unit。這個需求在 Java MyBatis 項目中非常常見&#xff0c;下面我將為你詳細寫出 Mapper 接口&#xff08;Java&#xff09; 和 MyBatis XML 映射文件 的寫法。 ? 前提…

pyspark 創建DataFrame

from pyspark.sql import SparkSession from pyspark.sql import StructType, StructField, IntegerType,StringType spark SparkSession.builder.appName(test).getOrCreate() 1、 從列表中創建DataFrame data [(1,"alice"),(2,Blob),(3,Charlie)] columns [&qu…

Vim:從入門到進階的高效文本編輯器之旅

目錄 一、Vim簡介 二、Vim的基礎操作 2.1 進入和退出Vim 2.2 Vim的三種模式 2.3 基礎移動 三、Vim的高效編輯技巧 3.1 文本編輯 3.2 文本刪除與修改 3.3 復制與粘貼 四、Vim的進階使用 4.1 搜索與替換 4.2 寄存器與宏 4.3 插件與配置 五、結語 在編程界&#xff0…

Docker基礎理論與阿里云Linux服務器安裝指南

文章目錄 一、Docker核心概念二、阿里云環境準備三、Docker安裝與配置四、核心容器部署示例五、開發環境容器化六、運維管理技巧七、安全加固措施 一、Docker核心概念 容器化本質&#xff1a; 輕量級虛擬化技術&#xff0c;共享主機內核進程級隔離&#xff08;cgroups/namespac…

c#使用筆記之try catch和throw

一、try catch 一種報錯的捕捉機制&#xff0c;try塊里運行的代碼出現錯誤的時候就會去執行catch塊所以一般catch塊里都是把錯誤打印出來或者保存到log日志里&#xff1b; 1.1、具體使用 catch可以用&#xff08;&#xff09;來選擇捕捉什么類型的錯誤&#xff0c;一般用Exc…