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

建设网站用什么空间服务器房地产的最新政策

建设网站用什么空间服务器,房地产的最新政策,个人网站备案简介怎么写,不用淘宝客api如何做网站文章目录 1、将有序数组转换为二叉搜索树1.1 题目链接1.2 题目描述1.3 解题代码1.4 解题思路 2、排序链表2.1 题目链接2.2 题目描述2.3 解题代码2.4 解题思路 3、建立四叉树3.1 题目链接3.2 题目描述3.3 解题代码3.4 解题思路 4、合并 K 个升序链表4.1 题目链接4.2 题目描述4.3…

文章目录

  • 1、将有序数组转换为二叉搜索树
    • 1.1 题目链接
    • 1.2 题目描述
    • 1.3 解题代码
    • 1.4 解题思路
  • 2、排序链表
    • 2.1 题目链接
    • 2.2 题目描述
    • 2.3 解题代码
    • 2.4 解题思路
  • 3、建立四叉树
    • 3.1 题目链接
    • 3.2 题目描述
    • 3.3 解题代码
    • 3.4 解题思路
  • 4、合并 K 个升序链表
    • 4.1 题目链接
    • 4.2 题目描述
    • 4.3 解题代码
    • 4.4 解题思路


1、将有序数组转换为二叉搜索树

1.1 题目链接

点击跳转到题目位置

1.2 题目描述

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵
平衡(平衡二叉树是指该树所有节点的左右子树的高度相差不超过1) 二叉搜索树。

提示:

  • 1 <= nums.length <= 104
  • -104 <= nums[i] <= 104
  • nums 按 严格递增 顺序排列

1.3 解题代码

/*** 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 {TreeNode build(int[] nums, int left, int right){if(left > right){return null;}int mid = (left + right) >> 1;TreeNode root = new TreeNode(nums[mid]);if(mid == left){root.left = null;root.right = build(nums, left + 1, right);} else if(mid == right){root.left = build(nums, left, right - 1);root.right = null;} else{root.left = build(nums, left, mid - 1);root.right = build(nums, mid + 1, right);}return root;}public TreeNode sortedArrayToBST(int[] nums) {int n = nums.length;return build(nums, 0, n - 1);}
}

1.4 解题思路

  1. 分治本质上是递归,本题就是将数组对半分,中间的数字为根节点,然后对左右子树继续建立成二叉搜索树。

2、排序链表

2.1 题目链接

点击跳转到题目位置

2.2 题目描述

给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表
提示:

  • 链表中节点的数目在范围 [0, 5 * 104] 内
  • -105 <= Node.val <= 105

2.3 解题代码

/*** 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 merge(ListNode head1, ListNode head2){ListNode dummyHead = new ListNode();ListNode head = dummyHead;while(head1 != null && head2 != null){if(head1.val < head2.val){head.next = head1;head1 = head1.next;} else{head.next = head2;head2 = head2.next;}head = head.next;}if(head1 != null){head.next = head1;} if(head2 != null){head.next = head2;}return dummyHead.next;}public ListNode sortList(ListNode head, ListNode tail){if(head == null){return null;}if(head.next == tail){head.next = null;return head;}ListNode fastNode = head;ListNode slowNode = head;while(fastNode != tail){fastNode = fastNode.next;slowNode = slowNode.next;if(fastNode != tail){fastNode = fastNode.next;}}return merge(sortList(head, slowNode), sortList(slowNode, tail));}public ListNode sortList(ListNode head) {return sortList(head, null);}
}

2.4 解题思路

  1. 归并排序的思路,只不过是链表形式。

3、建立四叉树

3.1 题目链接

点击跳转到题目位置

3.2 题目描述

给你一个 n * n 矩阵 grid ,矩阵由若干 0 和 1 组成。请你用四叉树表示该矩阵 grid 。

你需要返回能表示矩阵 grid 的 四叉树 的根结点。

四叉树数据结构中,每个内部节点只有四个子节点。此外,每个节点都有两个属性:

  • val:储存叶子结点所代表的区域的值。1 对应 True,0 对应 False。注意,当 isLeaf 为 False 时,你可以把 True 或者 False 赋值给节点,两种值都会被判题机制 接受
  • isLeaf: 当这个节点是一个叶子结点时为 True,如果它有 4 个子节点则为 False 。
    在这里插入图片描述
    我们可以按以下步骤为二维区域构建四叉树:
  1. 如果当前网格的值相同(即,全为 0 或者全为 1),将 isLeaf 设为 True ,将 val 设为网格相应的值,并将四个子节点都设为 Null 然后停止。
  2. 如果当前网格的值不同,将 isLeaf 设为 False, 将 val 设为任意值,然后如下图所示,将当前网格划分为四个子网格。
  3. 使用适当的子网格递归每个子节点。

四叉树格式:

你不需要阅读本节来解决这个问题。只有当你想了解输出格式时才会这样做。输出为使用层序遍历后四叉树的序列化形式,其中 null 表示路径终止符,其下面不存在节点。

它与二叉树的序列化非常相似。唯一的区别是节点以列表形式表示 [isLeaf, val] 。

如果 isLeaf 或者 val 的值为 True ,则表示它在列表 [isLeaf, val] 中的值为 1 ;如果 isLeaf 或者 val 的值为 False ,则表示值为 0

3.3 解题代码

/*
// Definition for a QuadTree node.
class Node {public boolean val;public boolean isLeaf;public Node topLeft;public Node topRight;public Node bottomLeft;public Node bottomRight;public Node() {this.val = false;this.isLeaf = false;this.topLeft = null;this.topRight = null;this.bottomLeft = null;this.bottomRight = null;}public Node(boolean val, boolean isLeaf) {this.val = val;this.isLeaf = isLeaf;this.topLeft = null;this.topRight = null;this.bottomLeft = null;this.bottomRight = null;}public Node(boolean val, boolean isLeaf, Node topLeft, Node topRight, Node bottomLeft, Node bottomRight) {this.val = val;this.isLeaf = isLeaf;this.topLeft = topLeft;this.topRight = topRight;this.bottomLeft = bottomLeft;this.bottomRight = bottomRight;}
}
*/class Solution {Node Build(int[][] grid, int r1, int c1, int r2, int c2){int row_mid = ((r1 + r2) >> 1);int col_mid = ((c1 + c2) >> 1);for(int i = r1; i <= r2; ++i){for(int j = c1; j <= c2; ++j){if(grid[i][j] != grid[r1][c1]){return new Node(true, false, Build(grid, r1, c1, row_mid, col_mid), Build(grid, r1, col_mid + 1, row_mid, c2),Build(grid, row_mid + 1, c1, r2, col_mid),Build(grid, row_mid + 1, col_mid + 1, r2, c2));}}}// 如果区域内相同return new Node(grid[r1][c1] == 1, true);}public Node construct(int[][] grid) {int n = grid.length;return Build(grid, 0, 0, n - 1, n - 1);}
}

3.4 解题思路

  1. 分治思想
  2. 如果正方形内所有元素值都相等,则建立节点,该节点为叶子节点,值为该元素值,0为false,1为true。
  3. 如果正方形内存在元素不相等,则当前节点不为叶子节点,将该正方形继续建立四叉树。

4、合并 K 个升序链表

4.1 题目链接

点击跳转到题目位置

4.2 题目描述

给你一个链表数组,每个链表都已经按升序排列。

请你将所有链表合并到一个升序链表中,返回合并后的链表。

提示:

  • k == lists.length
  • 0 <= k <= 104
  • 0 <= lists[i].length <= 500
  • -104 <= lists[i][j] <= 104
  • lists[i] 按 升序 排列
  • lists[i].length 的总和不超过 104

4.3 解题代码

/*** 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 { ListNode merge(ListNode head1, ListNode head2){ListNode dummyHead = new ListNode();ListNode head = dummyHead;while(head1 != null && head2 != null){if(head1.val < head2.val){head.next = head1;head1 = head1.next;} else{head.next = head2;head2 = head2.next;}head = head.next;}if(head1 != null){head.next = head1;}if(head2 != null){head.next = head2;}return dummyHead.next;}public ListNode Build(ListNode[] lists, int left, int right){if(left == right){return lists[left];}if(left > right){return null;}int mid = (left + right) >> 1;return merge(Build(lists, left, mid), Build(lists, mid + 1, right));}public ListNode mergeKLists(ListNode[] lists) {return Build(lists, 0, lists.length - 1);}
}

4.4 解题思路

  1. 分治思想。
  2. 将多个链表两两配对,合并成一个更长的链表。
http://www.dtcms.com/wzjs/565501.html

相关文章:

  • 网站建设设计培训班企业网站建设注意
  • wordpress建站插件长沙房价走势最新消息
  • 南通网站公司专做美食的网站
  • 网站的栏目有什么名字商务网站信息审核的重要性在于
  • 门头沟青岛网站建设苏州知名网站建设设计公司排名
  • 济宁500元做网站国内 wordpress主机
  • 青岛做网站哪家优化好网站权限怎么设置
  • php网站开发进程做哪个网站比较有流量
  • 将自己做的网站发布到买邮箱的网站
  • 做外国人生意的网站有哪些旅游网站开发目的6
  • 怎么做公司网站需要什么全网营销总结报告
  • 郑州小程序开发多少钱关键词优化一年多少钱
  • 福田大型商城网站建设成都游戏开发
  • 网站搜索不到了网页开发环境一般写什么
  • 亚马逊跨境电商个人开店流程昆明搜索引擎的关键词优化
  • pc网站做移动端适配网站安全认证多少钱
  • 深圳企业网站制作流程南昌企业自助建站
  • 做带字头像的网站儿童主题网站的内容建设
  • 啊里云服务器怎么做网站开发区全力做好网站建设
  • wordpress顶图滑动网站seo优化关键词
  • 有链接的网站怎么做网站关键词优化方式
  • 网站建设的关键事项软件定制开发网
  • 多种语言的网站国外域名查询网站
  • 做视频后期的网站做织梦网站之前要新建数据库吗
  • 免费做长图网站网络营销和电子商务区别
  • 单页营销网站怎么做安徽建讯建设工程管理有限公司
  • 全国设计网站建设湖北网页设计师培训
  • 河南省建设工程招标网seo行业
  • 做网站怎么才会被百度收录xampp wordpress服务器
  • 网站流程小说网站建设方案书ppt