1020. 飞地的数量

难度中等131

给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个海洋单元格、1 表示一个陆地单元格。

一次 移动 是指从一个陆地单元格走到另一个相邻(上、下、左、右)的陆地单元格或跨过 grid 的边界。

返回网格中 无法 在任意次数的移动中离开网格边界的陆地单元格的数量。

示例 1:

输入:grid = [[0,0,0,0],[1,0,1,0],[0,1,1,0],[0,0,0,0]]
输出:3
解释:有三个 1 被 0 包围。一个 1 没有被包围,因为它在边界上。

示例 2:

输入:grid = [[0,1,1,0],[0,0,1,0],[0,0,1,0],[0,0,0,0]]
输出:0
解释:所有 1 都在边界上或可以到达边界。
class Solution {public int numEnclaves(int[][] grid) {int res = 0;for(int i = 1;i < grid.length-1;i++){for(int j = 1;j < grid[0].length-1;j++){int numberZ = 0;int numberF = 0;if(dfsZ(grid,i,j,numberZ) != 0 && dfsF(grid,i,j,numberF) != 0){res += numberZ + numberF;}}}return res;}public int dfsZ(int [][]grid,int x,int y,int number){if(flag(x,y,grid)){if(grid[y][x+1] == 1){dfsZ(grid,x+1,y,number++);}if(grid[y+1][x] == 1){dfsZ(grid,x,y+1,number++);}}else {return 0;}return number;}public int dfsF(int [][]grid,int x,int y,int number){if(flag(x,y,grid)){if(grid[y][x-1] == 1){dfsF(grid,x-1,y,number++);}if(grid[y-1][x] == 1){dfsF(grid,x,y-1,number++);}}else {return 0;}return number;}public boolean flag(int x,int y,int [][]grid){if(x == grid[0].length || y == grid.length || x == 0 || y == 0){return false;}else{return true;}}
}

1669. 合并两个链表

难度中等40

给你两个链表 list1list2 ,它们包含的元素分别为 n 个和 m 个。

请你将 list1 中下标从 ab 的全部节点都删除,并将list2 接在被删除节点的位置。

下图中蓝色边和节点展示了操作后的结果:

请你返回结果链表的头指针。

示例 1:

输入:list1 = [0,1,2,3,4,5], a = 3, b = 4, list2 = [1000000,1000001,1000002]
输出:[0,1,2,1000000,1000001,1000002,5]
解释:我们删除 list1 中下标为 3 和 4 的两个节点,并将 list2 接在该位置。上图中蓝色的边和节点为答案链表。

示例 2:

输入:list1 = [0,1,2,3,4,5,6], a = 2, b = 5, list2 = [1000000,1000001,1000002,1000003,1000004]
输出:[0,1,1000000,1000001,1000002,1000003,1000004,6]
解释:上图中蓝色的边和节点为答案链表。
/*** 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 mergeInBetween(ListNode list1, int a, int b, ListNode list2) {ListNode res = list1;int i = 0;ListNode temp = res;ListNode temp1 = res;while(i < a-1){temp = temp.next;i++;}int j = 0;while(j <= b){temp1 = temp1.next;j++;}temp.next = list2;while(temp.next != null){temp = temp.next;}temp.next = temp1;return res;}
}

108. 将有序数组转换为二叉搜索树

难度简单933

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。

高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。

示例 1:

输入:nums = [-10,-3,0,5,9]
输出:[0,-3,9,-10,null,5]
解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:

示例 2:

输入:nums = [1,3]
输出:[3,1]
解释:[1,3] 和 [3,1] 都是高度平衡二叉搜索树。
/*** 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 sortedArrayToBST(int[] nums) {// 左右等分建立左右子树,中间节点作为子树根节点,递归该过程return nums == null ? null : buildTree(nums, 0, nums.length - 1);}private TreeNode buildTree(int[] nums, int l, int r) {if (l > r) {return null;}int m = l + (r - l) / 2;TreeNode root = new TreeNode(nums[m]);root.left = buildTree(nums, l, m - 1);root.right = buildTree(nums, m + 1, r);return root;}
}

leetcode刷题记录--数据结构;深度优先搜索算法;二叉树;平衡树;1020. 飞地的数量;1669. 合并两个链表;108. 将有序数组转换为二叉搜索树相关推荐

  1. Suzy找到实习了吗 Day23 | 二叉树最后一节!669. 修剪二叉搜索树,108. 将有序数组转换为二叉搜索树,538. 把二叉搜索树转换为累加树

    669. 修剪二叉搜索树 题目 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high.通过修剪二叉搜索树,使得所有节点的值在[low, high]中.修剪树 不应该 改变保 ...

  2. leetcode 108. Convert Sorted Array to Binary Search Tree | 108. 将有序数组转换为二叉搜索树(Java)

    题目 https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ 题解 经典二分,不解释了,直接看代码 /*** ...

  3. 【leetcode】108. 将有序数组转换为二叉搜索树

  4. 数据结构与算法--力扣108题将有序数组转换为二叉搜索树

    力扣108提将有序数组转换为二叉搜索树 近一年都比较关注算法相关的知识,也刷了不少题,之前的文章中大多也是算法相关的文章,但是感觉每次遇到树相关的题型都不能应对自如,因此还是有必要在相关知识上下功夫, ...

  5. laravel数组转换为字符串_LeetCode刷题实战108:将有序数组转换为二叉搜索树

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  6. LeetCode(Python)—— 将有序数组转换为二叉搜索树(简单)

    将有序数组转换为二叉搜索树 概述:给你一个整数数组 nums ,其中元素已经按升序排列,请你将其转换为一棵高度平衡二叉搜索树.高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 ...

  7. [Leetcode][第108题][JAVA][将有序数组转换为二叉搜索树][二分法][递归]

    [问题描述][简单] 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树.本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1.示例:给定有序数组: [- ...

  8. LeetCode实战:将有序数组转换为二叉搜索树

    题目英文 Given an array where elements are sorted in ascending order, convert it to a height balanced BS ...

  9. 【数据结构与算法】之深入解析“将有序数组转换为二叉搜索树”的求解思路与算法示例

    一.题目要求 给你一个整数数组 nums ,其中元素已经按升序排列,请你将其转换为一棵高度平衡 二叉搜索树. 高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树. ...

最新文章

  1. Java IDEA Debug进制二维数组
  2. sersync 文件同步系统(一) 服务初步搭建
  3. 找不到媳妇给愁的。。。
  4. NGUI-制作位图字体以及图文混排
  5. 设计模式 生成器_生成器设计模式的应用
  6. jclouds_使用jclouds在S3上分段上传
  7. “睡服”面试官系列第二十二篇之class的继承(建议收藏学习)
  8. LeetCode MySQL 1501. 可以放心投资的国家
  9. 21天Jenkins打卡Day7-打包git代码
  10. Unity HDRP 光照贴图
  11. 联想Y720安装双系统详解win10+ubuntu14.04+gtx1060显卡驱动
  12. 白云市场高仿包值不值得买?
  13. CF 285 E Positions in Permutations 题解
  14. Casbin-authz-plugin:基于Casbin的Docker权限管理、访问控制插件
  15. 空闲时间不要接私活,要提升自己
  16. 客户端连接WSUS服务器时代码80244010 windows更新遇到未知错误
  17. 7 Python文件与数据格式化
  18. 6 如何保障项目按期完工? 人人都是项目经理系列(第6/13篇)
  19. 目标检测经典论文——R-CNN论文翻译:Rich feature hierarchies for accurate object detection and semantic segmentation
  20. 关于毕业设计的总结与思考

热门文章

  1. 每天坚持慢跑30分钟,一个月身体会有什么变化?
  2. python文件处理相关
  3. ESP32 常用蓝牙AT指令使用例程
  4. 论python在金融行业的重要性论文_金融业发展的现状、问题与策略毕业论文
  5. C语言萌新写题第四天
  6. AJAX开发过程中的七宗罪
  7. oracle避免回表,请教大家: 经常在sql调优过程中提到避免“回表”,具体是指什么意思???3Q...
  8. Oracle11gR2的服务简介
  9. 电信新势力,TIP/CORD能颠覆电信设备商吗?
  10. (原)详解生产线物流规划的原理及操作方式