力扣Hot100(Java版本)

1. 哈希

1.1 两数之和

题目描述:

  • 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

  • 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。

  • 你可以按任意顺序返回答案。

力扣链接:

https://leetcode.cn/problems/two-sum/description/【简单】

解题思路:

  1. 实例化一个HashMap来保存<值, 索引>

  2. 遍历HashMap,找到就返回索引下标,找不到就添加元素

核心代码:

class Solution {public int[] twoSum(int[] nums, int target) {// map保存<值,索引>Map<Integer,Integer> map = new HashMap<>();for(int i = 0; i < nums.length; ++i){if(map.containsKey(target - nums[i])){return new int[]{map.get(target - nums[i]),i};}map.put(nums[i],i); // 返回[索引1,索引2]}return new int[0]; // 返回[]}
}

1.2 字母异位词分组

题目描述:

  • 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

  • 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

力扣链接:

https://leetcode.cn/problems/group-anagrams/description【中等】

解题思路:

  1. Map保存<排序后的字符串, List<String>>
  2. 遍历strs, 依次添加到Map

核心代码:

class Solution {public List<List<String>> groupAnagrams(String[] strs) {// 1. Map保存<排序后的str, List<String>>Map<String, List<String>> map = new HashMap<>();// 2. 遍历strs, 依次添加到Mapfor (String str : strs){char[] charStr = str.toCharArray();Arrays.sort(charStr);String orderStr = new String(charStr);if (map.containsKey(orderStr)){map.get(orderStr).add(str);}else{List<String> temp = new ArrayList<>();temp.add(str);map.put(orderStr,temp);}}return new ArrayList<List<String>>(map.values());}
}

1.3 最长连续序列

题目描述:

  • 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

  • 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。

力扣链接:

https://leetcode.cn/problems/longest-consecutive-sequence/description【中等】

解决思路:

  1. 将nums数组的所有元素放入HashSet,去除重复元素
  2. 从序列的最小值开始找,更新最大值

核心代码:

class Solution {public int longestConsecutive(int[] nums) {// 1. 将nums数组的所有元素放入HashSet, 去除重复元素HashSet<Integer> hs = new HashSet<>();for (int i : nums){hs.add(i);}int ans = 0;for (int i : hs){// 2. 只从序列的最小值开始找if (!hs.contains(i - 1)){int curAns = 1;while(hs.contains(i+1)){i++;curAns++;}ans = Math.max(ans,curAns);}}return ans; }
}

2. 双指针

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

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

相关文章

FCB文件疑问+求助:01 百度网盘视频自动生成AI笔记pdf会出现对应fcb文件-作用待详解

疑问求助&#xff1a;01 百度网盘视频自动生成AI笔记pdf会出现对应fcb文件-作用待确认确认详解.md 一、疑惑起因 百度网盘视频自动生成AI笔记pdf会出现对应fcb文件&#xff0c;我可以删除fcb文件么&#xff1f;影响什么&#xff1f;如何打开fcb其内容是啥&#xff1f;直观看删…

【数据结构】——栈和队列OJ

一、有效的括号 题目链接&#xff1a; 20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 题目的要求很简单&#xff0c;就是要求我们判断其输入的括号字符串是否是有效的括号&#xff0c;那么我们要如何判断呢&#xff1f; 我们可以这样&#xff0c;我们遍历出传入的…

开源免费无广告专注PDF编辑、修复和管理工具 办公学术 救星工具

各位PDF处理小能手们&#xff01;我跟你们说啊&#xff0c;今天要给大家介绍一款超牛的国产开源PDF处理工具&#xff0c;叫PDFPatcher&#xff0c;也叫PDF补丁丁。它就像一个PDF文档的超级修理工&#xff0c;专门解决PDF编辑、修复和管理的各种难题。 这软件的核心功能和特点&a…

【Bluedroid】蓝牙 HID DEVICE 初始化流程源码解析

本文深入剖析Android蓝牙协议栈中HID设备&#xff08;BT-HD&#xff09;服务的初始化与启用流程&#xff0c;从接口初始化、服务掩码管理、服务请求路由到属性回调通知&#xff0c;完整展现蓝牙HID服务激活的技术路径。通过代码逻辑梳理&#xff0c;揭示服务启用的核心机制&…

2025年项目管理软件革命:中国技术主权与全球创新浪潮的交锋

全球项目管理软件市场正在经历一场由多重技术叠加引发的结构性变革。根据Gartner最新预测&#xff0c;到2025年项目管理工具市场规模将突破220亿美元&#xff0c;其中中国市场增速达38%&#xff0c;远超全球平均水平。这场变革不仅关乎工具功能迭代&#xff0c;更深刻影响着企业…

计算机组成与体系结构:组相联映射(Set-Associative Mapping)

目录 &#x1f9e9; 映射方式问题回顾 &#x1f3d7;️ 组相联映射 工作流程 地址结构 ♻️ 替换策略 示例&#xff1a; 优点 ⚖️ 与其他映射方式对比 &#x1f9e9; 映射方式问题回顾 直接映射的问题&#xff1a; 优点&#xff1a;实现简单&#xff0c;查找速度快…

机器学习第八讲:向量/矩阵 → 数据表格的数学表达,如Excel表格转数字阵列

机器学习第八讲&#xff1a;向量/矩阵 → 数据表格的数学表达&#xff0c;如Excel表格转数字阵列 资料取自《零基础学机器学习》。 查看总目录&#xff1a;学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章&#xff1a;DeepSeek R1本地与线上满血版部署&#xff1a;…

基于Spring AI实现多轮对话系统架构设计

文章目录 基于Spring AI实现多轮对话系统架构设计 前言 一、多轮对话系统核心架构 1.1 架构概览 1.2 Spring AI核心优势 二、ChatClient与多轮对话设计 2.1 ChatClient的特性与角色 2.2 实现多轮对话方法 三、Advisors拦截器机制 3.1 Advisors概念与工作原理 3.2 对…

C++中的虚表和虚表指针的原理和示例

一、基本概念 1. 什么是虚函数&#xff08;virtual function&#xff09;&#xff1f; 虚函数是用 virtual 关键字修饰的成员函数&#xff0c;支持运行时多态&#xff08;dynamic polymorphism&#xff09;。通过基类指针或引用调用派生类重写的函数。 class Base { public:…

FPGA:XILINX FPGA产品线以及器件选型建议

本文将详细介绍Xilinx&#xff08;现为AMD的一部分&#xff09;当前的FPGA产品线及其主要特点&#xff0c;并提供器件选型的建议。以下内容基于Xilinx FPGA的最新信息&#xff0c;涵盖产品系列、特性及选型指导。由于Xilinx已被AMD收购&#xff0c;产品线以AMD Xilinx品牌为主&…

【C++】多线程和多进程

在C++中,多线程通信(同一进程内的线程间交互)和进程间通信(IPC,不同进程间的数据交换)是构建并发系统的核心技术。以下是两种通信机制的详细介绍和典型实现: 一、多线程通信(线程间同步与数据共享) 1. 共享内存与同步原语 通过全局变量或对象成员变量实现数据共享,…

PC Cleaner软件,它能帮助用户轻松清理和优化电脑,提升系统性能。

不用破解就能用&#xff01;这款超神的电脑清理 Pro 版&#xff0c;绝了&#xff01; 宝子们&#xff0c;我是你们的数码小助手蓝木云&#xff01;不知道大家有没有这种感觉&#xff0c;电脑用久了&#xff0c;就像住久了没打扫的屋子&#xff0c;越来越 “乱”&#xff0c;运…

linux中fork()函数的小问题

问题描述&#xff1a;分析下列代码&#xff0c;分别能产生多少a // 1 for(int i0; i<3; i){ printf("a\n"); fork(); }// 2 for(int i0; i<3; i){ fork(); printf("a\n"); }// 3 for(int i0; i<3; i){ fork(); printf("a"); } fflus…

阿克曼-幻宇机器人系列教程2- 机器人交互实践(Topic)

在上一篇文章中&#xff0c;我们介绍了两种登录机器人的方式&#xff0c;接下来我们介绍登录机器人之后&#xff0c;我们如何通过topic操作命令实现与机器人的交互。 1. 启动 & 获取topic 在一个终端登录树莓派后&#xff0c;执行下列命令运行机器人 roslaunch huanyu_r…

51c嵌入式~电路~合集27

我自己的原文哦~ 一、7805应用电路 简介 如上图&#xff0c;7805 集成稳压电路。 7805是串联式三端稳压器&#xff0c;三个端口分别是电压输入端&#xff08;IN&#xff09;&#xff0c;地线&#xff08;GND&#xff09;&#xff0c;稳压输出&#xff08;OUT&#xff09;…

Vitrualbox完美显示系统界面(只需三步)

目录 1.使用vitrualbox的增强功能&#xff1a;​编辑 2.安装增强功能&#xff08;安装完后要重启虚拟机&#xff09;&#xff1a; 3. 调整界面尺寸&#xff08;如果一个选项不行的话&#xff0c;就多试试其他不同的百分比&#xff09;&#xff1a; 先看看原来的&#xff0c;…

2025年第十六届蓝桥杯软件赛省赛C/C++大学A组个人解题

文章目录 题目A题目C&#xff1a;抽奖题目D&#xff1a;红黑树题目E&#xff1a;黑客题目F&#xff1a;好串的数目 https://www.dotcpp.com/oj/train/1166/ 题目A 找到第2025个素数 #include <iostream> #include <vector> using namespace std; vector<i…

电机控制储备知识学习(一) 电机驱动的本质分析以及与磁相关的使用场景

目录 电机控制储备知识学习&#xff08;一&#xff09;一、电机驱动的本质分析以及与磁相关的使用场景1&#xff09;电机为什么能够旋转2&#xff09;电磁原理的学习重要性 二、电磁学理论知识1&#xff09;磁场基础知识2&#xff09;反电动势的公式推导 附学习参考网址欢迎大家…

JMeter同步定时器 模拟多用户并发访问场景

同步定时器 JMter同步定时器的作用主要在于模拟多用户并发访问的场景&#xff0c;确保多个线程能够同时执行某个操作&#xff0c;达到真正的并发效果。 当多个线程同时启动时&#xff0c;它们可能会在不同的时间间隔内执行&#xff0c;这样就无法达到真正的并发效果。&#xff…

C++11异步编程 --- async

C11异步编程 — async和future C11引入了async和future机制&#xff0c;用于简化异步编程和并发操作。这两个组件位于<future>头文件中&#xff0c;提供了高级的异步任务管理接口。 一、async 1.定义 std::async std::async是一个函数模板&#xff0c;用于启动一个异…