Leetcode-Hot 100题目分类

哈希 (以空间换时间)

1 两数之和

在这里插入图片描述
原始的暴力破解的方法:

class Solution {public int[] twoSum(int[] nums, int target) {/** 暴力破解的方法 */int[] result = new int[2];int length = nums.length;for(int i = 0;i<length;i++){for(int j = i+1;j<length;j++){if(nums[i]+nums[j]==target){return new int[]{i,j};}}}return result;}
}

以空间换时间的写法

class Solution {public int[] twoSum(int[] nums, int target) {/** hash时间换空间 */int[] result = new int[2];int length = nums.length;HashMap<Integer,Integer> map = new HashMap<>();for(int i=0;i<length;i++){map.put(nums[i],i);}for(int i = 0;i<length;i++){int partA = nums[i];int partB = target - nums[i];if(map.get(partB)!=null && map.get(partB)!=i){result[0] = i;result[1] = map.get(partB);}}return result;}
}

2 字母异位词分组

在这里插入图片描述

/* 分为两个步骤,一是字符串排序,放到Map中*/
class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String,List<String>> map = new HashMap<>();for(String str:strs){char[] chars =  str.toCharArray();Arrays.sort(chars);String key = new String(chars);List<String> list = map.getOrDefault(key,new ArrayList<String>());list.add(str);map.put(key,list);}return new ArrayList<List<String>>(map.values());}
}

3 最长连续序列(也可用动态规划)

在这里插入图片描述

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

双指针

移动零

在这里插入图片描述

class Solution {public void moveZeroes(int[] nums) {int length = nums.length;int j = 0;for(int i = 0;i<length;i++ ){if(nums[i]!=0){nums[j++] = nums[i];}}for(int k=j;k<length;k++){nums[k] = 0;}return;}
}
一共两个指针
左指针左边都是非零的数值
使用双指针,左指针指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。
右指针不断向右移动,每次右指针指向非零数,则将左右指针对应的数交换,同时左指针右移。
注意到以下性质:
1.左指针左边均为非零数;
2.右指针左边直到左指针处均为零。
因此每次交换,都是将左指针的零与右指针的非零数交换,且非零数的相对顺序并未改变。/* 双指针记方式*/
class Solution {public void moveZeroes(int[] nums) {int length = nums.length;int left = 0;int right = 0;for(int i = 0;i<length;i++ ){if(nums[right]!=0){// 交换左右的位置int temp = nums[right];nums[right] = nums[left];nums[left] = temp;left++;}right++;}return;}
}

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

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

相关文章

win10鼠标无限转圈圈是什么原因,win10系统鼠标无限转圈圈

win10鼠标无限转圈圈是什么原因?一般后台有程序在运行,鼠标出现圆圈转动则代表正在加载中,等待一会就好了。若如果转了好久的圈圈,程序没有响应,点击桌面也没有反应,则尝试打开任务管理器,将未响应或异常的程序强制结束掉。其实,出现这种情况,有可能是win10系统中的一…

【氮化镓】GaN SP-HEMT的栅极可靠性

概括总结&#xff1a; 本文研究了氮化镓&#xff08;GaN&#xff09;肖特基型p-栅高电子迁移率晶体管&#xff08;GaN SP-HEMT&#xff09;的栅极鲁棒性和可靠性&#xff0c;通过一种新的电路方法评估了在实际转换器中栅极电压&#xff08;VGS&#xff09;过冲波形的栅极电压应…

第四百四十二回 再谈flutter_launcher_icons包

文章目录 1. 概念介绍2. 使用方法3. 示例代码4. 经验与总结4.1 经验分享4.2 内容总结 我们在上一章回中介绍了"overlay_tooltip简介"相关的内容&#xff0c;本章回中将 再谈flutter_launcher_icons包.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 …

dockerhub右键快速搜索脚本

Chrome 浏览器扩展的后台脚本&#xff0c;用于创建右键菜单项&#xff0c;并根据用户的操作在新的标签页中打开 Docker Hub 网站或者进行搜索。 // 创建右键菜单项&#xff0c;用于打开 Docker Hub 网站 chrome.contextMenus.create({id: search-home, // 菜单项的唯一标识符t…

吴恩达2022机器学习专项课程(一) 4.6 运行梯度下降第一周课程实验:线性回归的梯度下降算法

问题预览/关键词 更新梯度下降对模型拟合&#xff0c;等高线图&#xff0c;3d空间图的变化。什么是批量梯度下降。实验目标计算梯度运行梯度下降梯度下降迭代次数和成本函数的关系可视化模型预测在等高线图上的梯度下降学习率过大报错问题 笔记 1.模型拟合&#xff0c;等高线…

刷题之Leetcode283题(超级详细)

283.移动零 283. 移动零https://leetcode.cn/problems/move-zeroes/ 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nu…

C语言拾遗

1、 char *itoa(int value, char *string, int radix) 整形转换成字符串&#xff0c;但该函数实际上不属于c标准库&#xff0c;只是windows和gcc中提供了该接口。 如果无法使用该接口&#xff0c;一般可以使用sprintf进行替代。在leecode中&#xff0c;就不会提供itoa接口。 at…

Qt环形颜色选择控件, 圆环颜色选择器

参考文章Qt编写自定义控件&#xff1a;环形颜色选择控件_qconicalgradient圆环渐变-CSDN博客 感谢作责提供的方法&#xff0c;下面程序的基础思路同参考文章。 为了更方便使用&#xff0c;这个选择器是基于64色表的&#xff0c;会显示选中的索引和色值。颜色选择时计算方式也…

腾讯云优惠券介绍、领券入口及使用教程分享

腾讯云作为国内领先的云服务提供商&#xff0c;为广大用户提供了稳定、高效、安全的云计算服务。为了吸引用户上云&#xff0c;腾讯云推出了优惠券活动。本文将对腾讯云优惠券进行详细介绍&#xff0c;包括优惠券的种类、领券入口以及使用教程&#xff0c;助力大家轻松上云&…

Web APIs简介 Dom

JS的组成 API API 是一些预先定义的函数&#xff0c;目的是提供应用程序与开发人员基于软件或硬件得以访问一组例程的能力&#xff0c;而又无需访问源码&#xff0c;或理解内部工作机制的细节 简单理解&#xff1a;API是给程序员提供的一种工具&#xff0c;以便能更轻松的实现…

旋转验证码v2的加密算法

某网站最近更新了旋转验证码v2的加密算法&#xff0c;给爬虫程序带来了新的挑战。本文将通过网络抓包和逆向分析&#xff0c;深入探讨验证码请求和响应的加密机制&#xff0c;并提供详细的代码实现&#xff0c;帮助读者了解并应对新版验证码的加密算法。 网络抓包分析&#xf…

数据计算_先分组平均再加总平均与直接整体平均的差异

数据计算_先分组平均再加总平均与直接整体平均的差异 例如: 现有 A, B, C, D, E, F, G, H 共 8 组数据。 A: 16619 B: 12922 C: 15946 D: 13096 E: 13647 F: 13700 G: 13703 H: 12430其整体平均的值为: Average of ABCDEFGH: (16619 12922 15946 13096 13647 13700 1…

RecyclerView实现View复用的原理

RecyclerView是Android框架类&#xff0c;用于显示一个持续更新的项列表。它是一个容器&#xff0c;可以利用回收和重用的视图元素来展示数据。 RecyclerView的工作原理&#xff1a; 当RecyclerView需要展示一个新的项时&#xff0c;它会调用Adapter的onCreateViewHolder()方…

Linux--文件、分区与挂载

概述1 **Linux系统中的文件系统是用于管理文件的系统**&#xff0c;它负责数据的存储和管理。在Linux中&#xff0c;一切皆文件&#xff0c;包括普通的文件、目录以及块设备、管道等都通过文件系统来管理。文件系统不仅包含文件中的数据&#xff0c;还包括文件系统的结构&…

授人以渔 选购EX篇:推荐杂记索引

文章目录 系列文章生活好物饮食好物其他好物系统软件篇软件推荐杂记娱乐推荐杂记 系列文章 授人以渔 选购篇一&#xff1a;信用卡选购要点 授人以渔 选购篇二&#xff1a;冰箱选购要点 授人以渔 选购篇三&#xff1a;洗衣机&#xff08;烘干机&#xff09;选购要点 授人以渔 选…

感染了后缀为.jayy勒索病毒如何应对?数据能够恢复吗?

导言&#xff1a; 在当今数字化的世界中&#xff0c;网络安全已经成为了每个人都需要关注的重要议题。而勒索病毒作为网络安全领域中的一大威胁&#xff0c;不断地演变和升级&#xff0c;给个人和组织带来了严重的损失和困扰。近期&#xff0c;一种名为.jayy的勒索病毒引起了广…

Pointlio 保存每帧的里程计和点云数据用作后处理的自动或者手动回环优化

修改了laserMapping.cpp 文件,替换源程序的这个文件即可, Pointlio 保存每帧的里程计和点云数据用作后处理的自动或者手动回环优化,需要在设置里面打开保存数据的参数和pub的参数。 // #include <so3_math.h> #include <nav_msgs/Odometry.h> #include <nav…

(十一)RabbitMQ及SpringAMQP

1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c;打电话可以立即得到响应&#xff0c;…

anaconda 安装Jupyter

在Anaconda中安装Jupyter Notebook可以通过以下步骤进行&#xff1a; 打开Anaconda命令行界面&#xff08;可以在开始菜单中找到Anaconda3下的Anaconda Prompt&#xff09;。 在命令行中&#xff0c;输入以下命令来更新当前的conda环境&#xff1a; conda update conda 然后…

接口日志表结构

表&#xff1a;ZTALL_IFLOG MANDT MANDT CLNT 3 0 0 客户端 UUID SYSUUID_C32 CHAR 32 0 0 16-byte UID in 32 chars (hexadecimal) IFSNR ZE_IFSNR CHAR 30 0 0 接口编号(系统ID流水号) FUNCNAME RS38L_FNAM CHAR 30 0 0 功能模块的名称 STATUS BAPI_MTYPE CHAR 1 0 0 消息类…