力扣爆刷第119天之CodeTop100五连刷81-85

力扣爆刷第119天之CodeTop100五连刷81-85

文章目录

      • 力扣爆刷第119天之CodeTop100五连刷81-85
      • 一、14. 最长公共前缀
      • 二、718. 最长重复子数组
      • 三、169. 多数元素
      • 四、662. 二叉树最大宽度
      • 五、128. 最长连续序列

一、14. 最长公共前缀

题目链接:https://leetcode.cn/problems/longest-common-prefix/description/
思路:求最长公共前缀,直接取第一个字符串,然后每一个字符就遍历剩余的字符串,时间复杂度O(N)2.

class Solution {public String longestCommonPrefix(String[] strs) {if(strs.length == 0 || strs[0].equals("")) return strs[0];StringBuilder builder = new StringBuilder();String s0 = strs[0];int k = 0;for(int i = 0; i < s0.length(); i++) {char c = s0.charAt(i);for(int j = 1; j < strs.length; j++) {if(i >= strs[j].length() || c != strs[j].charAt(i)) {return builder.toString();}}builder.append(c);}return builder.toString();}
}

二、718. 最长重复子数组

题目链接:https://leetcode.cn/problems/maximum-length-of-repeated-subarray/description/
思路:最长重复子数组是连续的子数组,定义dp[i][j]表示,以nums1[i]和nums2[j]为结尾的区间的最长重复子数组,根据这个定义,若nums1[i] != nums2[j],则以这两为结尾的字符子串长度为0,相等为dp[i+1][j+1] = dp[i][j] + 1;
定义好dp然后根据定义去推导递推关系。

class Solution {public int findLength(int[] nums1, int[] nums2) {int m = nums1.length, n = nums2.length, max = Integer.MIN_VALUE;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;}max = Math.max(max, dp[i+1][j+1]);}}return max;}
}

三、169. 多数元素

题目链接:https://leetcode.cn/problems/majority-element/description/
思路:利用一个元素用来计数,相同的数加1,不同的数减1,最后剩下的数就是多数元素。

class Solution {public int majorityElement(int[] nums) {int count = 0, res = 0;for(int n : nums) {if(count == 0) {res = n;}count = res == n ? count + 1 : count - 1;}return res;}
}

四、662. 二叉树最大宽度

题目链接:https://leetcode.cn/problems/maximum-width-of-binary-tree/description/
思路:本题求最大宽度,是需要利用满二叉树的特性的,采用前序遍历,给每一个节点编号,root=id,左孩子=id2,右孩子=id2+1,只需要记录下每一行最左边的节点的id,后面每次递归都计算当前节点与这一层最左边的距离,id相减就是距离,那么如何收集最左边的节点呢,采用先序遍历,list元素个数和深度相等就收集。
在这里插入图片描述

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

五、128. 最长连续序列

题目链接:https://leetcode.cn/problems/longest-consecutive-sequence/description/
思路:列表无序,也不要求顺序,求最长连续序列,还要求O(N),那么就不能排序了,可以利用set集合,如果连续一定是一段一段的,我们只需要找到每一个连续段的开头,从这个地方开始技术,全部统计完就可以,注意,只从连续段的头开始计算。

class Solution {public int longestConsecutive(int[] nums) {HashSet<Integer> set = new HashSet<>();int max = 0;for(int i : nums) {set.add(i);}for(int i : set) {if(!set.contains(i-1)) {int t = 0;while(set.contains(i)) {t++;i++;}max = Math.max(max, t);}}return max;}
}

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

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

相关文章

[数据结构]——二叉树——堆排序

后续代码以此为基础 typedef int HPDataTyp; typedef struct Heap {HPDataTyp * a; int size; int capacity; } Hp; 1.首先我们需要掌握两种堆算法 1&#xff0c;堆向下调整算法 现在我们给出一个数组&#xff0c;逻辑上看做一颗完全二叉树。我们通过从根节点开始的向下调整…

【Java开发指南 | 第十篇】Java修饰符

读者可订阅专栏&#xff1a;Java开发指南 |【CSDN秋说】 文章目录 JAVA修饰符访问修饰符非访问修饰符static 修饰符final 修饰符abstract 修饰符synchronized 修饰符transient 修饰符volatile 修饰符 JAVA修饰符 修饰符用来定义类、方法或者变量&#xff0c;通常放在语句的最前…

C#创建磁性窗体的方法:创建特殊窗体

目录 一、磁性窗体 二、磁性窗体的实现方法 (1)无标题窗体的移动 (2)Left属性 (3)Top属性 二、设计一个磁性窗体的实例 &#xff08;1&#xff09;资源管理器Resources.Designer.cs设计 &#xff08;2&#xff09;公共类Frm_Play.cs &#xff08;3&#xff09;主窗体 …

JavaWeb前端/后端开发规范——接口文档概述及YApi平台的使用

前言&#xff1a; 整理下笔记&#xff0c;打好基础&#xff0c;daydayup!!! 接口文档 什么是接口文档&#xff1f; 目前主流的开发模式为前后端分离式开发&#xff0c;为了方便前后端的对接&#xff0c;就需要使用接口文件进行统一规范。 接口文档记载什么信息&#xff1f; 1&…

李飞飞团队发布《2024年人工智能指数报告》,预测人工智能未来发展趋势

昨天&#xff0c;斯坦福大学 Human-Center Artificial Intelligence (HAI)研究中心发布了《2024年人工智能指数报告》。 由斯坦福大学发起的人工智能指数&#xff08;AI Index&#xff09;是一个追踪 AI 动态和进展的非营利性项目&#xff0c;旨在全面研究 AI 行业状况&#xf…

物联网的核心价值是什么?——青创智通

工业物联网解决方案-工业IOT-青创智通 物联网&#xff0c;这个词汇在当今的科技领域已经变得耳熟能详。但当我们深入探索物联网的核心价值时&#xff0c;我们会发现它远不止是一个简单的技术概念&#xff0c;而是一种能够彻底改变我们生活方式和工作方式的革命性力量。 物联网…

libcurl 简单使用

LibCurl是一个开源的免费的多协议数据传输开源库&#xff0c;该框架具备跨平台性&#xff0c;开源免费&#xff0c;并提供了包括HTTP、FTP、SMTP、POP3等协议的功能&#xff0c;使用libcurl可以方便地进行网络数据传输操作&#xff0c;如发送HTTP请求、下载文件、发送电子邮件等…

C语言基础入门案例(3)

目录 第一题&#xff1a;一维数组的最大值和最小值求解 第二题&#xff1a;求一维数组中的第二大的数 第三题&#xff1a;计算5个整数的平均值 第四题&#xff1a;查找整数在数组中的索引位置 第五题&#xff1a;统计字符串中数字字符的个数 第一题&#xff1a;一维数组的…

服务器Linux搭建NPM私有仓库

服务器Linux搭建NPM私有仓库 环境搭建 安装 nodejs nodejs官网&#xff1a;https://nodejs.org/en/download/package-manager 可以去官网自行下载nodejs的Linux版本&#xff0c;但是出于别的原因考虑&#xff0c;可以使用nvm去下载nodejs这样会切换nodejs也方便。 nvm 这…

MySQL进阶-----limit、count、update优化

目录 前言 一、limit优化 1. 未优化案例 2.优化后案例 二、count优化 count用法 三、update优化 1.锁行情况&#xff08;有索引&#xff09; 2.锁表情况&#xff08;无索引&#xff09; 前言 上一期我们学习了order by优化和group by优化&#xff0c;本期我们就继续学习…

程序员接单的渠道有没有可靠介绍?

程序员接单的渠道有很多&#xff0c;但总结下来无非就是个人介绍和程序员接单平台。 这里就不多说废话了&#xff0c;直接上当前市面上靠谱且稳定的程序员接单平台list。 程序员客栈 近100w程序员都在使用的程序员接单平台。作为一个靠谱的线上接单渠道&#xff0c;程序员客栈…

SSRF靶场

SSRF概述 ​ 强制服务器发送一个攻击者的请求 ​ 互联网上的很多web应用提供了从其他服务器&#xff08;也可以是本地)获取数据的功能。使用用户指定的URL&#xff0c;web应用可以获取图片&#xff08;载入图片&#xff09;、文件资源&#xff08;下载或读取)。如下图所示&…