力扣爆刷第118天之CodeTop100五连刷76-80

力扣爆刷第118天之CodeTop100五连刷76-80

文章目录

      • 力扣爆刷第118天之CodeTop100五连刷76-80
      • 一、221. 最大正方形
      • 二、240. 搜索二维矩阵 II
      • 三、162. 寻找峰值
      • 四、234. 回文链表
      • 五、112. 路径总和

一、221. 最大正方形

题目链接:https://leetcode.cn/problems/maximal-square/description/
思路:求最大的正方形,可以定义dp[i][j]表示nums[i][j]=1时,且以它为右下角的正方形的最长边长,有了定义以后就要想办法找出状态之间的转移,右下角是依赖于左边,上边,左上角的,关系如何传递?右下角的边长应该是这三个边长中最短的加1。由此便可以达到递推公式:dp[i+1][j+1] = Math.min(Math.min(dp[i+1][j], dp[i][j+1]), dp[i][j]) + 1;

class Solution {public int maximalSquare(char[][] matrix) {int m = matrix.length, n = matrix[0].length, max = matrix[0][0] - '0';int[][] dp = new int[m+1][n+1];for(int i = 0; i < m; i++) {for(int j = 0; j < n; j++) {if(matrix[i][j] == '0') continue;if(i == 0 || j == 0) {dp[i+1][j+1] = 1;}else{dp[i+1][j+1] = Math.min(Math.min(dp[i+1][j], dp[i][j+1]), dp[i][j]) + 1;}max = Math.max(max, dp[i+1][j+1]);}}return max * max;}
}

二、240. 搜索二维矩阵 II

题目链接:https://leetcode.cn/problems/search-a-2d-matrix-ii/description/
思路:矩阵本身是从左往右递增,从上往下递增,所以要利用这个特性,当前位置的左边都是比它小的,当前位置的下边都是比它大的,从右上角开始向左或者向下寻找,深度优先递归即可。

class Solution {boolean flag = false;public boolean searchMatrix(int[][] matrix, int target) {dfs(matrix, target, 0, matrix[0].length-1);return flag;}void dfs(int[][] matrix, int target, int x, int y) {if(x < 0 || x >= matrix.length || y < 0 || y >= matrix[0].length || flag) return;if(matrix[x][y] == target) {flag = true;return;}else if(target < matrix[x][y]) {dfs(matrix, target, x, y-1);}else{dfs(matrix, target, x+1, y);}}}

三、162. 寻找峰值

题目链接:https://leetcode.cn/problems/find-peak-element/description/
思路:题目要求时间复杂度log n,显然要使用二分查找,不过本题的二分查找因为没有一个明确的目的,是要去左区间还是右区间,那就是全部都要去,都要遍历,所以就是一个二叉树的遍历,相当于要前序遍历二叉树,剩下的就是判断和边界条件了,以及早停。

class Solution {int flag = -1;public int findPeakElement(int[] nums) {if(nums.length == 1) return 0;bs(nums, 0, nums.length-1);return flag;}void bs(int[] nums, int left, int right) {if(left > right || flag != -1) return ;int mid = left + (right - left) / 2;if(mid-1 == -1) {if(nums[mid] > nums[mid+1]) {flag = mid;return ;}}else if(mid+1 == nums.length) {if(nums[mid] > nums[mid-1]) {flag = mid;return ;}}else if(nums[mid] > nums[mid-1] && nums[mid] > nums[mid+1]) {flag = mid;return ;}bs(nums, left, mid-1);bs(nums, mid+1, right);}
}

四、234. 回文链表

题目链接:https://leetcode.cn/problems/palindrome-linked-list/description/
思路:链表求回文,可以快慢指针找到链表中间节点,然后翻转后半部分,然后比较,另外就是要注意链表的奇偶个数,要做一下处理。

class Solution {public boolean isPalindrome(ListNode head) {ListNode slow = head, fast = head;while(fast != null && fast.next != null) {slow = slow.next;fast = fast.next.next;}if(fast != null) slow = slow.next;fast = reverse(slow);slow = head;while(fast != null) {if(slow.val != fast.val) return false;slow = slow.next;fast = fast.next;}return true;}ListNode reverse(ListNode node) {ListNode root = new ListNode();ListNode p = node, pre = null;while(p != null) {pre = p.next;p.next = root.next;root.next = p;p = pre;}return root.next;}
}

五、112. 路径总和

题目链接:https://leetcode.cn/problems/path-sum/description/
思路:路径总和很简单,就是在二叉树中使用回溯算法,思路和典型的回溯类似,确定好收集结果的点,前序遍历,当前节点左右子树遍历完,向上返回时要去掉前面添加的状态。


class Solution {boolean flag = false;int sum = 0;public boolean hasPathSum(TreeNode root, int targetSum) {order(root, targetSum);return flag;}void order(TreeNode root, int targetSum) {if(root == null || flag) return;sum += root.val;if(root.left == null && root.right == null) {if(sum == targetSum){flag = true;return;}}order(root.left, targetSum);order(root.right, targetSum);sum -= root.val;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/812020.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简站WordPress主题:简洁、实用、无插件、更安全

在众多的WordPress主题中&#xff0c;简站WordPress主题以其简洁、实用、无插件和更安全的特性脱颖而出&#xff0c;成为众多网站开发者和用户的首选。本文将对简站WordPress主题进行详细介绍&#xff0c;帮助您更好地了解这款优秀的主题。 一、简洁的设计 简站WordPress主题…

数据结构1:动态顺序表的实现

文章目录 头文件实现文件测试文件 头文件 #pragma once#include<stdio.h> #include<stdlib.h> #include<assert.h>#define INIT_CAPACITY 4typedef int SLDataType;// 动态顺序表 -- 按需申请 typedef struct SeqList {SLDataType* a;int size;int capacity…

浏览器工作原理与实践--HTTP/1:HTTP性能优化

谈及浏览器中的网络&#xff0c;就避不开HTTP。我们知道HTTP是浏览器中最重要且使用最多的协议&#xff0c;是浏览器和服务器之间的通信语言&#xff0c;也是互联网的基石。而随着浏览器的发展&#xff0c;HTTP为了能适应新的形式也在持续进化&#xff0c;我认为学习HTTP的最佳…

【LAMMPS学习】八、基础知识(2.6)Lammps中的Walls墙

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

解释器模式:专为语言处理定制的模式

在软件开发中&#xff0c;解释器模式是一种特定的行为型设计模式&#xff0c;它用于定义一种语法&#xff0c;并提供一个解释器来解释这种语法或表达式。这种模式用于专门的情况&#xff0c;当有一个简单的语言需要解释时&#xff0c;它可以被用来表达实例的规则。本文将详细介…

初识鸿蒙HarmonyOS系统

鸿蒙HarmonyOS的诞生背景 鸿蒙HarmonyOS的起源&#xff1a; 鸿蒙HarmonyOS是中华为面对全球科技发展趋势和自身战略需求&#xff0c;在2019年推出的全新一代面向全场景的分布式操作系统。它的诞生旨在应对物联网时代下各种智能设备互联互通的需求&#xff0c;以及构建自主可控…

【vue】watchEffect 自动侦听器

watchEffect&#xff1a;自动监听值的变化 获取旧值时&#xff0c;不是很方便&#xff0c;建议用watch <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevic…

redis zremove删除不掉【bug】

redis zremove删除不掉【bug】 前言版权redis zremove删除不掉错误产生相关资源EldDataEchartsTestDataService 解决 最后 前言 2024-4-12 20:35:21 以下内容源自《【bug】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星…

Ubuntu16.04 CUPS安装与Andoird ndk交叉编译CUPS(待续...)

ubuntu安装cups 在Ubuntu上安装CUPS&#xff08;打印系统&#xff09;的步骤如下&#xff1a; 1、打开终端。 2、更新软件包列表&#xff1a; sudo apt update 3、安装CUPS&#xff1a; sudo apt install cups​​​​​​​ 4、安装foomatic-filters与ghostscript&…

每日一练(力扣)

我的思路是暴力枚举: 情况1:相同&#xff0c;就让子串和原串同时后移继续比较 情况2:不相同&#xff0c;就只让原串后移 public int strStr(String haystack, String needle) {if (haystack.length() < needle.length()){return -1;}for (int i 0; i < h…

HiveSQL基础Day03

回顾总结 hive表的类型 &#xff1a;内部表和外部表 删除内部表会删除表的所有数据 删除外部表只会删除表的元数据&#xff0c;hdfs上的行数据会保留 表的分区和分桶 本质都是对表数据的拆分存储 分区的方式 是通过创建不同的目录来拆分数据 &#xff0c;根据数据本身的内容最为…

K8S哲学 - 常见的资源类型

资源类型 namespace kubectl apply 和 kubectl create kubectl apply是声明式的 和 kubectl create是命令式的对吗 deployment 和 job的区别 k8s 的 lable 的意义

【YUNBEE云贝-进阶课】MySQL8.0性能优化实战培训

众多已经学习过MySQL 8.0 OCP认证专家的课程的同学们对 MySQL 8.0 的安装部署、体系结构、配置监控、用户管理、主从复制、系统运维、MGR等基础操作和动手实验有了一定的学习基础.很多学员反馈希望更进一步提升技术能力、解决工作中碰到的性能问题。 针对MySQL8.0的数据库性能优…

DMA的认识

DMA介绍 Q:什么是DMA&#xff1f; DMA( Direct Memory Access&#xff0c;直接存储器访问 ) 提供在 外设与内存 、 存储器和存储器 、 外设 与外设 之间的 高速数据传输 使用。它允许不同速度的硬件装置来沟通&#xff0c;而不需要依赖于 CPU &#xff0c;在这个时间中&am…

go的标准化error处理

go的标准化error处理 文章目录 go的标准化error处理1、建议这样写错误处理2、怎么优化代码让其不再堆积 1、建议这样写错误处理 // 1 func autn() {var err errorif err ! nil {// handle err}//do stuff }// 2 func a(r *http.Request) error {//err : r.ParseForm()//if er…

算法打卡day34

今日任务&#xff1a; 1&#xff09;62.不同路径 2&#xff09;63.不同路径 II 3&#xff09;复习day10 62.不同路径 题目链接&#xff1a;62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “S…

数据中心的网络架构设计,打造高效、安全的数字底座

数据中心的网络架构设计 一、数据中心网络架构设计原则 网络,作为数据中心的核心支柱,其结构精妙,由众多二层接入设备与少量三层设备共同编织而成。过去,数据中心网络规模有限,仅凭数十台设备的简单互连便能实现信息的畅通无阻。然而,随着技术与应用需求的飞速增长,数据…

Missing artifact org.opencv:opencv:jar:4.10.0 [opencv-4.10.0.jar]

Missing artifact org.opencv:opencv:jar:4.10.0 [opencv-4.10.0.jar] https://mvnrepository.com/artifact/org.opencv/opencv 根本就没有 找了个旧项目的opencv-410.jar修改下opencv-4.10.0.jar放到目录下面就好了 D:\localRepository\org\opencv\opencv\4.10.0 OpenCV-C…

[HDFS 相关Shell命令]

目录 HDFS 相关Shell命令: 相关文件操作命令: HDFS 相关Shell命令: 注意&#xff0c;下述命令中的<path>代表文件或目录的路径&#xff0c;<local_path>代表本地文件系统的路径&#xff0c;而<hdfs_path>代表HDFS上的路径。使用这些命令时&#xff0c;需要…

类的六个默认成员函数(上)

目录 构造函数 析构函数 拷贝构造函数 对于日期&#xff08;Date&#xff09;类&#xff0c;可以通过 Init 公有方法给对象设置日期&#xff0c;但如果每次创建对象时都调用该方法设置信息&#xff0c;未免有点麻烦&#xff0c;那能否在对象创建时&#xff0c;就将信息设置进…