当前位置: 首页 > news >正文

南宁网络公司网站建设wordpress配置资源

南宁网络公司网站建设,wordpress配置资源,汉川网站开发,网站建设公司网站模板文章目录 41 排序链表42 合并k个升序链表43 LRU缓存44 二叉树的中序遍历45 二叉树的最大深度 41 排序链表 递归 归并排序找到链表中心点#xff0c;从中心点将链表一分为二。奇数个节点找中心点#xff0c;偶数个节点找中心左边的点作为中心点。快慢指针找中心点#xff0c… 文章目录 41 排序链表42 合并k个升序链表43 LRU缓存44 二叉树的中序遍历45 二叉树的最大深度 41 排序链表 递归 归并排序找到链表中心点从中心点将链表一分为二。奇数个节点找中心点偶数个节点找中心左边的点作为中心点。快慢指针找中心点当快指针移动到该段链表的最后一个元素时慢指针所指向的节点为中心点。找到中心点后中心点.next null将链表从中间断开。分别将前一半链表的头节点head和后一半链表的头节点中心点.next进行下一次划分。注意快慢指针初始化时快指针比慢指针快一步方便链表只有2个节点时划分链表。合并有序链表 (1) 建立新节点作为新链表的哨兵节点。 (2) leftright 分别指向两个链表的头部比较两个指针处节点值的大小从小到大插入到有序链表中指针交替前进直至其中一个链表为空。将剩余的链表直接插入到有序链表的尾部。 (3) 返回哨兵节点.next。 /*** Definition for singly-linked list.* function ListNode(val, next) {* this.val (valundefined ? 0 : val)* this.next (nextundefined ? null : next)* }*/ /*** param {ListNode} head* return {ListNode}*/ var sortList function(head) {if(head null || head.next null){ // 1个节点或0个节点return head;}let slow head, fast head.next;while(fast ! null fast.next ! null){ // 奇数个节点fast null停止偶数个节点fast.next null停止slow slow.next;fast fast.next.next;}let tmp slow.next;slow.next null;let left sortList(head);let right sortList(tmp);let dummy new ListNode();let res dummy;while(left ! null right ! null){if(left.val right.val){dummy.next left;left left.next;}else{dummy.next right;right right.next;}dummy dummy.next;} dummy.next left? left: right;return res.next; };42 合并k个升序链表 方法1最小堆。将头节点放入堆中弹出最小值node此时将node.next放入堆中一直取到堆为空为止每次取出最小值时都将最小值的下一个节点放入堆中。方法2分治。这里给出该方法的代码。将链表数组lists一分为二先合并前一半链表再合并后一半链表最后完成全部链表的合并。中心点为mid前一半链表的区域为[左mid]后一半链表的区域为[mid 1右]。 /*** Definition for singly-linked list.* function ListNode(val, next) {* this.val (valundefined ? 0 : val)* this.next (nextundefined ? null : next)* }*/var merge function(left, right){let dummy new ListNode();let cur dummy;while(left ! null right ! null){if(left.val right.val){cur.next left;left left.next;}else{cur.next right;right right.next;}cur cur.next;}cur.next left? left: right;return dummy.next; }/*** param {ListNode[]} lists* return {ListNode}*/ var mergeKLists function(lists) {function partition(i, j){if(i j){ // 区域内只有1个值return lists[i];}if(i j){ // 非法区域return null;}let mid Math.floor((i j) / 2);let left partition(i, mid);let right partition(mid 1, j);return merge(left, right);}return partition(0, lists.length - 1) };43 LRU缓存 哈希表 双向链表put ① key不存在创建新节点添加进哈希表添加到链表头部。如果当前容量 capacity删除链表尾部节点删除哈希表中对应的项。 ② key存在通过哈希表找到key所在的节点改变value移动到链表头部。get ① key不存在返回 -1。 ② key存在通过哈希表找到key所在的节点移动到链表头部返回value。这里给出的代码直接使用哈希表实现各类操作。this.map.delete(key); this.map.set(key, value);先删除再将该节点添加到最后。this.map.keys().next().value;哈希表中第一个键值。 /*** param {number} capacity*/ var LRUCache function(capacity) {this.capacity capacity;this.map new Map(); };/** * param {number} key* return {number}*/ LRUCache.prototype.get function(key) {if(this.map.has(key)){let value this.map.get(key);this.map.delete(key);this.map.set(key, value);return value;}else{return -1;} };/** * param {number} key * param {number} value* return {void}*/ LRUCache.prototype.put function(key, value) {if(this.map.has(key)){let value this.map.get(key);this.map.delete(key);}this.map.set(key, value);if(this.map.size this.capacity){this.map.delete(this.map.keys().next().value);} };/*** Your LRUCache object will be instantiated and called as such:* var obj new LRUCache(capacity)* var param_1 obj.get(key)* obj.put(key,value)*/44 二叉树的中序遍历 方法1递归法。 /*** Definition for a binary tree node.* function TreeNode(val, left, right) {* this.val (valundefined ? 0 : val)* this.left (leftundefined ? null : left)* this.right (rightundefined ? null : right)* }*/ /*** param {TreeNode} root* return {number[]}*/ var inorderTraversal function(root) {var res [];var traversal function(root){if(root null){return;}traversal(root.left); // 左res.push(root.val); // 根traversal(root.right); // 右}traversal(root);return res; };方法2迭代法。遍历顺序与处理顺序不同。 /*** Definition for a binary tree node.* function TreeNode(val, left, right) {* this.val (valundefined ? 0 : val)* this.left (leftundefined ? null : left)* this.right (rightundefined ? null : right)* }*/ /*** param {TreeNode} root* return {number[]}*/ var inorderTraversal function(root) {var res []; // 存放结果var vis []; // 模拟遍历队列存放访问过的元素while(root ! null || vis.length ! 0){if(root ! null){vis.push(root);root root.left; // 左}else{root vis.pop();res.push(root.val); // 根root root.right; // 右}}return res; };45 二叉树的最大深度 深度任意节点到根节点的距离使用前序遍历。高度任意节点到叶子节点的距离使用后序遍历。根节点的高度就是二叉树的最大深度。这里使用后序遍历即通过求根节点高度得出二叉树的最大深度。 /*** Definition for a binary tree node.* function TreeNode(val, left, right) {* this.val (valundefined ? 0 : val)* this.left (leftundefined ? null : left)* this.right (rightundefined ? null : right)* }*/ /*** param {TreeNode} root* return {number}*/ var maxDepth function(root) {if(root null){return 0;}var leftheight maxDepth(root.left);var rightheight maxDepth(root.right);var height Math.max(leftheight, rightheight) 1;return height; };
http://www.hkea.cn/news/14279529/

相关文章:

  • 做外贸必须有公司网站么wordpress 流量统计插件
  • 织梦 企业网站耳机商城网站开发
  • 建设信用卡分期购物网站新版wordpress如何添加标签
  • 网站下雪特效计算机网站建设考试试卷
  • 深圳网站建设.-方维网络齐齐哈尔做网站公司
  • 百度信息流广告推广关键词优化策略
  • 大庆网站建设公司哪家好青之峰网站建设
  • 安次区建设局网站广告设计专业学校有哪些
  • 网页设计适合女生吗唐山做网站优化公司
  • 深圳网站开发王者荣耀做网站
  • 长春专业网站建设四川建设招标网官网
  • 手机端怎样做网站建设大都会下载安装
  • 固安建设行政主管部门官方网站北京短视频拍摄公司
  • 网站备案扫描江西建设厅网站查询施工员
  • 政务网站设计方案福建seo学校
  • 网站开发工作容易出现的失误南京 网站制作公司哪家好
  • 哪种语言网站建设做单挣钱的网站
  • 医疗知识普及网站开发广州机械网站建设
  • 个人网站制作网站竞价 推广
  • 如何做网站的页面中国中小企业河南网
  • 长春网站建设国际市场那个app可以看
  • 建设银行官方网站登录电脑版2024年的新闻
  • 网站建设绩效考核江苏省和城乡建设门户网站
  • 网站发外链的好处虎年ppt模板免费下载
  • 制作个网站大概多少钱建设工程的在建设部网站
  • 设计相关的网站有哪些内容怎样做同性恋女视频网站
  • asp网站免费辽宁seo推广公司
  • 做彩票游戏网站违法吗网站建设属于哪类税率
  • 高校网站建设工作总结138ip地址查询网站
  • 松江建设机械网站做网站哪家公司比较好而且不贵