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

news2024/9/9 5:33:41

力扣爆刷第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;
    }
}



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

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

相关文章

sort命令

简介 sort是在Linux里非常常用的一个排序命令。将文件的每一行作为一个单位&#xff0c;从首字符向后&#xff0c;依次按ASCII码值进行比较&#xff0c;默认将他们按升序输出。 常用参数 -u &#xff1a;去除重复行 -r &#xff1a;降序排列&#xff0c;默认是升序 …

华为HCIP Datacom H12-821 卷36

1.单选题 在PIM- SM中&#xff0c;以下关于RP 的描述&#xff0c;错误的是哪一选项? A、在PIM-SM中&#xff0c;组播数据流量不一定必须经过RP的转发。 B、对于一个组播组来说&#xff0c;可以同时有多个RP地址&#xff0c;提升网络可靠性。 C、组播网络中&#xff0c;可以…

一篇文章带你解密最近爆火的消费增值模型!

今天&#xff0c;我非常激动地向您介绍一个令人振奋的成功故事。我们的合作伙伴在短短一个月内实现了业绩的飞跃&#xff0c;达到了百万级别的销售额&#xff0c;同时他们的用户活跃度也保持在极高的水平&#xff0c;平均每天有8万至10万的在线用户。这一成就的取得&#xff0c…

ARMV8安全特性:Pointer Authentication

文章目录 前言一、Introduction二、Problem Definition三、Pointer Authentication3.1 Instructions3.2 Cryptography3.3 Key Management 四、Sample Use Cases4.1 Software Stack Protection4.2 Control Flow Integrity (CFI)4.3 Binding Pointers to Addresses 五、Security …

十大优秀AI人工智能作词软件有哪些?

1、妙笔生词&#xff1a;国内专业智能作词工具&#xff0c;是一款非常优秀的国内作词软件&#xff0c;它可以选择语言&#xff0c;风格&#xff0c;韵脚一键生成歌词&#xff0c;也可以仿写歌词&#xff0c;可以续写歌词&#xff0c;可以智能取歌名&#xff0c;找优秀词句&…

华宇携TAS应用中间件亮相2024年山东江信智能信创产品推介会

信创产业是数据、网络安全的基础&#xff0c;也是“新基建”的重要内容&#xff0c;将成为拉动经济发展的重要抓手之一。 7月5日&#xff0c;以“信守时代机遇&#xff0c;创造辉煌未来”为主题的山东江信智能信创产品推介会在济南举办。本次产品推介会汇聚了国内众多信息技术…

windows sshkeygen 多平台添加配置

文章目录 .ssh目录生成新的ssh配置添加公钥到仓库验证 .ssh目录 windows下一般为&#xff1a;C:\Users\15237\.ssh &#xff0c;其中“15237”为当前登录用户 生成新的ssh .ssh目录下打开“Git Bash Here”&#xff08;如果没有&#xff0c;先安装 Git 软件&#xff09; 执…

阿一课代表今日分享之使用dnscat2 进行dns隧道反弹shell(直连模式linux对linux)

DNS介绍 DNS是域名系统(Domain Name System)的缩写&#xff0c;是因特网的一项核心服务&#xff0c;它作为可以将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便的访问互联网&#xff0c;而不用去记住能够被机器直接读取的IP数串。 DNS的记录类型有很多&a…

The First项目报告:创新型金融生态Lista DAO

一、Lista DAO是什么&#xff1f; LISTA是Lista DAO的原生加密协议代币&#xff0c;设计为一种可互操作的实用代币&#xff0c;旨在促进去中心化金融&#xff08;DeFi&#xff09;领域内的支付、治理与激励。LISTA的诞生源于Lista DAO项目&#xff0c;该项目是一个基于BNB链的…

IntelliJ IDEA 2024.1.4最新教程!!直接2099!!爽到飞起!!

IntelliJ IDEA 2024.1.4最新破解教程&#xff01;&#xff01;直接2099&#xff01;&#xff01;爽到飞起&#xff01;&#xff01;【资源在末尾】安装馆长为各位看官准备了多个版本&#xff0c;看官可根据自己的需求进行下载和选择安装。https://mp.weixin.qq.com/s/Tic1iR_Xc…

【一文带你了解RAG(检索增强生成) | 概念理论介绍+ 代码实操(含源码)】

文末有福利&#xff01; 引言 针对大型语言模型效果不好的问题&#xff0c;之前人们主要关注大模型再训练、大模型微调、大模型的Prompt增强&#xff0c;但对于专有、快速更新的数据却并没有较好的解决方法&#xff0c;为此检索增强生成&#xff08;RAG&#xff09;的出现&am…

【简历】南京某一本大学:JAVA简历指导,基本拿不到offer

注&#xff1a;为保证用户信息安全&#xff0c;姓名和学校等信息已经进行同层次变更&#xff0c;内容部分细节也进行了部分隐藏 简历说明 这份简历是一个一本计算机专业的同学。一本同学在校招的时候&#xff0c;要做好自己的求职层次定位&#xff0c;因为像工业类、邮电类、…

【JavaScript 报错】未捕获的URI错误:Uncaught URIError

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、错误原因分析1. 不合法的URI字符2. 不匹配的编码 二、解决方案1. 检查URI字符2. 使用try-catch块 三、实例讲解四、总结 Uncaught URIError 是JavaScript中常见的一种错误&#xff0c;通常发生在全局URI处理函数&#x…

前端如何取消接口调用

&#x1f9d1;‍&#x1f4bb; 写在开头 点赞 收藏 学会&#x1f923;&#x1f923;&#x1f923; 1. xmlHttpRequest是如何取消请求的&#xff1f; 实例化的XMLHttpRequest对象上也有abort方法 const xhr new XMLHttpRequest(); xhr.addEventListener(load, function(e)…

程控水冷阻性负载是否有替代品出现?

程控水冷阻性负载是广泛应用于工业生产过程中的设备&#xff0c;主要用于冷却和控制电阻性负载。然而&#xff0c;随着科技的不断发展&#xff0c;新型的冷却和控制设备不断涌现&#xff0c;使得程控水冷阻性负载面临着替代品的挑战。 空气冷却系统是一种可能的替代品&#xff…

形态学图像处理

1 工具 1.1 灰度腐蚀和膨胀 当平坦结构元b的原点是(x,y)时&#xff0c;它在(x,y)处对图像f的灰度腐蚀定义为&#xff0c;图像f与b重合区域中的最小值。结构元b在位置(x,y)处对图像f的腐蚀写为&#xff1a; 类似地&#xff0c;当b的反射的原点是(x,y)时&#xff0c;平坦结构元…

C++ 【 Open3D 】 点云按高程进行赋色

一、 Open3D中根据点云的高程度信息为点云中的每个点附上颜色&#xff0c;并保存颜色渲染结果&#xff01; #include<iostream> #include<open3d/Open3D.h>using namespace std;int main() {//-------------------------------读取点云--------------------------…

FastAPI 学习之路(四十三)路径操作的高级配置

在实际开发中&#xff0c;可能我们有些接口不能在接口文档中与其他业务接口一样开放给前端或者其他对接人&#xff0c;那么我们肯定会想着在接口文档中对其进行屏蔽隐藏操作&#xff0c;那么可以实现吗&#xff1f; 接口文档中隐藏接口 当然&#xff0c;还很简单&#xff0c;…

利用Hbuilder创建vue3的web项目

大体流程如下 npm install vue-router4 下载完&#xff0c;就创建完了

Redis基础教程(二十):Java使用Redis

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…