力扣爆刷第163天之TOP100五连刷81-85(回文链表、路径和、最长重复子数组)

力扣爆刷第163天之TOP100五连刷81-85(回文链表、路径和、最长重复子数组)

文章目录

      • 力扣爆刷第163天之TOP100五连刷81-85(回文链表、路径和、最长重复子数组)
      • 一、234. 回文链表
      • 二、112. 路径总和
      • 三、169. 多数元素
      • 四、662. 二叉树最大宽度
      • 五、718. 最长重复子数组

一、234. 回文链表

题目链接:https://leetcode.cn/problems/palindrome-linked-list/description/
思路:判断链表是否是回文链表,也是经典题目了,一般对于链表来说基本操作就是快慢指针,通过快慢指针寻找链表的中间节点,然后把后一半链表翻转,头插法或者尾插法都可以,这样前一半和后一半的链表都正序了,就可以逐一比较了,只要相等即可。
qiu

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

    
}

二、112. 路径总和

题目链接:https://leetcode.cn/problems/path-sum/description/
思路:求路径总和,也就是存不存在一条路径上的总和等于目标和,这个寻找的过程类似于回溯,找到就OK了,找不到回溯返回,可以把累加和添加在函数的参数里,这样可以省去递归的撤销代码。
在这里插入图片描述

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

三、169. 多数元素

题目链接:https://leetcode.cn/problems/majority-element/description/
思路:求数组中的多数元素,何为多数元素,即数量超过总个数的一半即为多数,可以利用这一特性,采用计数法,用一个变量计数,另一个变量记录元素值,元素值相同就计数,不同就减,减到0,就替换元素,非常简单,利用计数法。

class Solution {
    public int majorityElement(int[] nums) {
        int num = 0, t = 0;
        for(int i : nums) {
            if(num == 0) t = i;
            if(i == t) num++;
            else num--;
        }
        return t;
    }
}

四、662. 二叉树最大宽度

题目链接:https://leetcode.cn/problems/maximum-width-of-binary-tree/description/
思路:求二叉树的最大宽度,本题对于宽度的定义是每一层中最左边的节点和最右边的节点所组成的区间中的所有节点的个数,包括null节点,所以可以采取给二叉树编码的方式,给每一个节点编码,并且记录下每一层第一个向下突破深度的节点,即可根据节点编号计算宽度。

class Solution {
    List<Integer> list = new ArrayList<>();
    int max = 1;
    public int widthOfBinaryTree(TreeNode root) {
        traverse(root, 0, 0);
        return max;
    }
    
    void traverse(TreeNode root, int id, int deep) {
        if(root == null) return ;
        if(list.size() == deep) {
            list.add(id);
        }else{
            max = Math.max(max, id - list.get(deep)+1);
        }
        traverse(root.left, id * 2 + 1, deep + 1);
        traverse(root.right, id * 2 + 2, deep + 1);
    }
    
}

五、718. 最长重复子数组

题目链接:https://leetcode.cn/problems/maximum-length-of-repeated-subarray/description/
思路:求最长重复子数组,也是很经典的动态规划题目,子数组是连续的,定义dp[i][j]表示以nums1[i]和nums2[j]为结尾的最长重复子数组的长度,根据定义来看,如果nums1[i] == nums2[j] 那么dp[i][j] = dp[i-1][j-1],这是因为如果结尾相等,那么他们的长度自然依赖于上一个状态,如果不等自然是0。

class Solution {
    public int findLength(int[] nums1, int[] nums2) {
        int m = nums1.length, n = nums2.length, max = 0;
        int[][] dp = new int[m+1][n+1];
        for(int i = 0; i < m; i++) {
            for(int j = 0; j < n; j++) {
                if(nums1[i] == nums2[j]) {
                    dp[i+1][j+1] = dp[i][j] + 1;
                }
                if(dp[i+1][j+1] > max) max = dp[i+1][j+1];
            }
        }
        return max;
    }
}



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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

盲人出行好帮手:蝙蝠避障让走路变简单

在一片无光的世界里&#xff0c;每一步都承载着探索与勇气。我是众多盲人中的一员&#xff0c;每天的出行不仅是从&#xff21;点到&#xff22;点的物理移动&#xff0c;更是一场心灵的征程。我的世界&#xff0c;虽然被剥夺了视觉的馈赠&#xff0c;却因科技的力量而变得宽广…

保护企业数据资产的策略与实践:数据安全治理技术之实战篇!

在上篇文章中&#xff0c;我们深入讨论了数据安全治理技术的前期准备工作&#xff0c;包括从建立数据安全运维体系、敏感数据识别、数据的分类与分级到身份认等方面的详细规划和设计。这些准备工作是实现数据安全治理的基础&#xff0c;它们为企业建立起一套系统化、标准化的数…

2.电容(常见元器件及电路基础知识)

一.电容种类 1.固态电容 这种一般价格贵一些&#xff0c;ESR,ESL比较低,之前项目400W电源用的就是这个&#xff0c;温升能够很好的控制 2.铝电解电容 这种一般很便宜&#xff0c;ESR,ESL相对大一些&#xff0c;一般发热量比较大&#xff0c;烫手。 这种一般比上一个贵一点&am…

[leetcode]maximum-binary-tree 最大二叉树

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:TreeNode* constructMaximumBinaryTree(vector<int>& nums) {return construct(nums, 0, nums.size() - 1);}TreeNode* construct(const vector<int>& nums, int left, int right) {if …

快速掌握 ==== js 正则表达式

git 地址 https://gitee.com/childe-jia/reg-test.git 背景 在日常开发中&#xff0c;我们经常会遇到使用正则表达式的场景&#xff0c;比如一些常见的表单校验&#xff0c;会让你匹配用户输入的手机号或者身份信息是否规范&#xff0c;这就可以用正则表达式去匹配。相信大多数…

CSS3实现彩色变形爱心动画【附源码】

随着前端技术的发展&#xff0c;CSS3 为我们提供了丰富的动画效果&#xff0c;使得网页设计更加生动和有趣。今天&#xff0c;我们将探讨如何使用 CSS3 实现一个彩色变形爱心加载动画特效。这种动画不仅美观&#xff0c;而且可以应用于各种网页元素&#xff0c;比如加载指示器或…

收集路径下的html并写到根目录index.html

我们可以用简单的脚本生成一个简单的导航页。 用于查看当前路径下所有的html。 #!/bin/bash index_root"/root/test/" cd ${index_root} echo "" > index.htmlecho "<html><head><title>Test Report Index</title></…

VBA 批量发送邮件

1. 布局 2. 代码 前期绑定的话&#xff0c;需要勾选 Microsoft Outlook 16.0 Object Library Option ExplicitConst SEND_Y As String "Yes" Const SEND_N As String "No" Const SEND_SELECT_ALL As String "Select All" Const SEND_CANCEL…

VSCode升级后不能打开在MacOS系统上

VSCode 在MacOS无法打开 版本 VSCode version: 1.91.0 (x64) 错误信息&#xff1a; MacBook-Pro ~ % /Users/mac/Downloads/FirefoxDownloads/Visual\ Studio\ Code.app/Contents/MacOS/Electron ; exit; [0710/142747.971951:ERROR:crash_report_database_mac.mm(753)] op…

网络建设与运维23国赛网络运维正式赛题解析

竞赛环境请看主页&#xff01; 23国赛网络运维 任务描述&#xff1a;某集团公司在更新设备后&#xff0c;路由之间无法正常通信&#xff0c;请修 复网络达到正常通信。 &#xff08;1&#xff09; 请在server1“管理员”下拉菜单中选择“镜像”选项卡&#xff0c;点 击 “创…

浪潮天启防火墙TQ2000远程配置方法SSL-xxx、L2xx 配置方法

前言 本次设置只针对配置VXX&#xff0c;其他防火墙配置不涉及。建议把防火墙内外网都调通后再进行Vxx配置。 其他配置可参考&#xff1a;浪潮天启防火墙配置手册 配置SSLVxx 在外网端口开启SSLVxx信息 开启SSLVxx功能 1、勾选 “启用SSL-Vxx” 2、设置登录端口号&#xff0…

扫描全能王AIGC“黑科技”亮相WAIC,《人民日报》、央视、新华社同时“点赞”

2024年世界人工智能大会&#xff08;WAIC&#xff09;于近期圆满闭幕。今年&#xff0c;合合信息旗下扫描全能王展台成为大会的“网红”&#xff0c;以AI古籍修复为代表的体验项目不仅赢得了专业观众的赞誉&#xff0c;也获得了包括CCTV-4、CCTV-13、《人民日报》、新华社、解放…

好用的IP反查接口(2)

IP-地理信息查询接口-本地化 参考&#xff1a; 通过Ip查询对应地址,Ip2location全球IP地址网段-CSDN博客 因为在线接口有限制&#xff08;毕竟别人提供服务&#xff0c;服务器&#xff0c;数据维护&#xff0c;域名啥的都要费用&#xff09;&#xff0c; 所以本地化服务的需…

【K8s】专题七(1):Kubernetes 服务发现之 Service

以下内容均来自个人笔记并重新梳理&#xff0c;如有错误欢迎指正&#xff01;如果对您有帮助&#xff0c;烦请点赞、关注、转发&#xff01;欢迎扫码关注个人公众号&#xff01; 目录 一、基本介绍 二、工作原理 三、对象类型 四、资源清单&#xff08;示例&#xff09; 五…

Java---SpringBoot详解一

人性本善亦本恶&#xff0c; 喜怒哀乐显真情。 寒冬暖夏皆有道&#xff0c; 善恶终归一念间。 善念慈悲天下广&#xff0c; 恶行自缚梦难安。 人心如镜自省照&#xff0c; 善恶分明照乾坤。 目录 一&#xff0c;入门程序 ①&#xff0c;创建springboot工程&#…

【Qt】QTabWidget的tab页隐藏问题

在Qt中&#xff0c;使用 ​ui->tab1->setHidden(true);​ 来隐藏一个 ​QTabWidget​ 的特定标签页可能不会达到预期的效果&#xff0c;因为 ​setHidden(true)​ 是用于隐藏整个 ​QWidget​ 的&#xff0c;而不是隐藏 ​QTabWidget​ 中的一个标签页。 要隐藏 ​QTabW…

Python高级(三)_正则表达式

Python高级-正则表达式 第三章 正则表达式 在开发中会有大量的字符串处理工作,其中经常会涉及到字符串格式的校验。 1、正则表达式概述 正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、…

【深度好文】合作伙伴关系管理自动化:双向共赢新趋势

在当今快速变化的商业环境中&#xff0c;合作伙伴关系已成为企业成功的关键因素之一。为了更高效地管理这些关系&#xff0c;合作伙伴关系管理自动化正逐渐成为行业的新趋势&#xff0c;它不仅简化了管理流程&#xff0c;更促进了双方共赢的局面。 一、传统管理 VS 自动化管理 …

Spring系列二:基于XML配置bean 下

基于XML配置bean &#x1f496;配置bean后置处理器&#x1f496;通过属性文件配置bean&#x1f496;基于XML的bean的自动装配&#x1f496;Spring El 表达式配置Bean &#x1f496;配置bean后置处理器 1在spring的ioc容器, 可以配置bean的后置处理器 2.该 处理器/对象 会在bean…

【AI大模型】通义灵码的部署与使用

【AI大模型】通义灵码的部署与使用 目前已支持&#xff1a; JetBrains IDEsIDE 版本&#xff1a;IntelliJ IDEA、PyCharm、GoLand、WebStorm、Android Studio 等 2020.3 及以上操作系统&#xff1a;Windows 7 及以上、macOS、LinuxVisual Studio CodeIDE 版本&#xff1a;1.68.…