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;
    }
}

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

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

相关文章

企业计算机服务器中了locked勒索病毒怎么办,locked勒索病毒解密流程步骤

网络技术的不断发展为企业的生产运营提供了极大便利&#xff0c;也让企业的生产效率大大提高&#xff0c;但网络是一把双刃剑&#xff0c;给给企业的数据安全问题带来严重威胁。近期&#xff0c;云天数据恢复中心接到浙江某商贸公司的求助&#xff0c;企业计算机服务器遭到了lo…

使用 Azure OpenAI、知识图 FalkorDB 和 LlamaIndex 构建医疗保健聊天机器人

原文地址&#xff1a;building-a-mental-health-qa-chatbot-using-falkordb-knowledge-graph-and-llamaindex 介绍 知识图谱是一种将数据转换为机器可以理解的知识的模型&#xff0c;它比传统数据管理系统更能够捕获数据的语义性质和含义。知识图谱通过结构化地表示实体、属性…

docker部署小霸王游戏

下载镜像 docker pull registry.cn-beijing.aliyuncs.com/wuxingge123/jsnes:1.0.0docker-compose部署 vim docker-compose.yml version: 3 services:jsnes:container_name: jsnesimage: registry.cn-beijing.aliyuncs.com/wuxingge123/jsnes:1.0.0ports:- 8082:80restart: …

ArduPilot无人船(车)故障保护设置

故障保护 无人船&#xff08;车&#xff09;支持三种故障保护机制&#xff0c;如下所述。 一、遥控器故障保护&#xff08;也称油门故障保护&#xff09; 如果用户的遥控器和无人船&#xff08;车&#xff09;上的接收机之间的连接丢失至少FS_TIMEOUT秒&#xff0c;则会触发此…

07 | Swoole 源码分析之 Channel 通道模块

原文首发链接&#xff1a;Swoole 源码分析之 Channel 通道模块 大家好&#xff0c;我是码农先森。 引言 通道&#xff0c;用于协程间通讯&#xff0c;支持多生产者协程和多消费者协程。底层自动实现了协程的切换和调度。 通道与 PHP 的 Array 类似&#xff0c;仅占用内存&am…

中科大发布Agent-FLAN,微调提升Agent能力

随着大语言模型&#xff08;LLMs&#xff09;在各种自然语言处理任务中取得巨大成功&#xff0c;将这些模型作为智能代理&#xff08;agents&#xff09;使用时&#xff0c;它们与基于API的模型相比仍有不小的差距。如何将代理能力有效地整合到通用的LLMs中&#xff0c;成为了一…

单片机为什么还在用C语言编程?

单片机产品的成本是非常敏感的。因此对于单片机开发来说&#xff0c;最重要的是在极其有限的ROM和RAM中实现最多产品的功能。或者反过来说&#xff0c;实现相同的产品功能&#xff0c;所需要的ROM和RAM越小越好&#xff0c;在开始前我有一些资料&#xff0c;是我根据网友给的问…

C++ 【原型模式】

简单介绍 原型模式是一种创建型设计模式 | 它使你能够复制已有对象&#xff0c;客户端不需要知道要复制的对象是哪个类的实例&#xff0c;只需通过原型工厂获取该对象的副本。 以后需要更改具体的类或添加新的原型类&#xff0c;客户端代码无需改变&#xff0c;只需修改原型工…

Linux(CentOS7)部署 y-api 接口管理平台

目录 前言 前置环境 mongodb node 安装 y-api 部署页面 启动 y-api 基本使用教程 前言 前后端分离时代&#xff0c;前后端通过接口文档来协作开发项目。一般开发过程中&#xff0c;由后端先编写接口文档&#xff0c;然后交付给前端&#xff0c;这时候前后端都根据这个…

C# 委托的基础应用

一、Action 和 Func 的使用。 二、自定义委托&#xff1a; 完整的使用代码示例&#xff1a; 三、委托的一般使用 模板方法&#xff1a; 回调方法&#xff0c;在模板方法的基础上进行添加。

刷题之Leetcode209题(超级详细)

209.长度最小的子数组 力扣题目链接(opens new window)https://leetcode.cn/problems/minimum-size-subarray-sum/ 给定一个含有 n 个正整数的数组和一个正整数 s &#xff0c;找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组&#xff0c;并返回其长度。如果不存在符合条…

EPSON高精度导航陀螺仪XV7001BB

随着道路交通的不断发展&#xff0c;以及城市道路的不断更新&#xff0c;以前走过的路早已物是人非&#xff0c;越来越多的驾驶者不得不借助导航系统才能到达目的地&#xff0c;导航成为了出行必不可少的功能。目前的导航都是基于GPS信号定位&#xff0c;再结合导航内部的地图软…

基于javaJSPssm实现的交通档案管理系统

开发语言&#xff1a;Java 框架&#xff1a;ssm 技术&#xff1a;JSP JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclip…

ThreadLocal核心源码阅读

1. 概述 ThreadLocal为每个使用该变量的线程提供独立的变量副本&#xff0c;因此每一个线程都可以独立地改变自己的副本&#xff0c;而不会影响其他线程。 入门例子&#xff1a; public class ThreadLocalStudy {static ThreadLocal<String> stringThreadLocal new T…

C语言:顺序表专题

目录 一、数据结构之顺序表/链表1.数据结构相关概念1.1什么是数据结构1.2为什么需要数据结构 二、顺序表1.顺序表的概念及结构2.顺序表分类3.动态顺序表的实现 一、数据结构之顺序表/链表 1.数据结构相关概念 1.1什么是数据结构 数据结构是由“数据”和“结构”两词组合而来…

医学图像处理 利用pytorch实现的可用于反传的Radon变换和逆变换

医学图像处理 利用pytorch实现的可用于反传的Radon变换和逆变换 前言代码实现思路实验结果 前言 Computed Tomography&#xff08;CT&#xff0c;计算机断层成像&#xff09;技术作为如今医学中重要的辅助诊断手段&#xff0c;也是医学图像研究的重要主题。如今&#xff0c;随…

Python-VBA函数基础知识-001

一、函数的定义&#xff1a; 函数(Function)是一段可重复使用的代码块&#xff0c;用于执行特定的任务或计算&#xff0c;并可以接受输入参数和返回输出结果。函数可以将复杂的问题分解为更小的子问题&#xff0c;提高代码的可读性和可维护性。 二、函数的组成&#xff1a; 在…

基于单片机电子指南针系统设计

**单片机设计介绍&#xff0c;基于单片机电子指南针系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机电子指南针系统设计概要主要涵盖了硬件设计、软件设计、磁场传感器选择、数据处理和显示等方面。以下是对该…

记某客户的一次无缝数据迁移

背景 客户需要将 Elasticsearch 集群无缝迁移到移动云&#xff0c;迁移过程要保证业务的最小停机时间。 实现方式 通过采用成熟的 INFINI 网关来进行数据的双写&#xff0c;在集群的切换恢复过程中来记录数据变更&#xff0c;待全量数据恢复之后再追平后面增量数据&#xff…

C++从入门到精通——类的作用域及类的实例化

类的作用域及类的实例化 前言一、类的作用域二、类的实例化引例类是对对象进行描述的示例 一个类可以实例化出多个对象示例 示例 前言 类的作用域是指类中定义的变量和方法的可见性和可访问性范围。在类的内部&#xff0c;所有成员&#xff08;包括属性和方法&#xff09;都具…