【LeetCode】挑战100天 Day17(热题+面试经典150题)

【LeetCode】挑战100天 Day17(热题+面试经典150题)

  • 一、LeetCode介绍
  • 二、LeetCode 热题 HOT 100-19
    • 2.1 题目
    • 2.2 题解
  • 三、面试经典 150 题-19
    • 3.1 题目
    • 3.2 题解

一、LeetCode介绍

在这里插入图片描述
LeetCode是一个在线编程网站,提供各种算法和数据结构的题目,面向程序员、计算机科学专业学生和技术爱好者等人群,旨在帮助他们提高算法和编程技能。LeetCode上的问题通常来自各种技术公司的面试题目,因此它也是程序员面试准备的重要资源之一。

LeetCode上的问题涵盖了各种难度级别,从入门级到专家级都有不同难度的题目可供练习。用户可以选择使用不同的编程语言提交答案,LeetCode能够对结果进行评估并返回测试结果。

除了题目外,LeetCode还提供了讨论区、排行榜等社区功能,用户可以在这里交流学习心得、解决疑难问题,并与其他用户比较自己的做题成绩。

挑战100天 AI In LeetCode是基于LeetCode题库,借助AI的能力进行解题、并学习其解题过程。

二、LeetCode 热题 HOT 100-19

2.1 题目

删除链表的倒数第 N 个结点

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

示例 1:


输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
示例 2:

输入:head = [1], n = 1
输出:[]
示例 3:

输入:head = [1,2], n = 1
输出:[1]
 

提示:

链表中结点的数目为 sz
1 <= sz <= 30
0 <= Node.val <= 100
1 <= n <= sz

在这里插入图片描述

2.2 题解

解题思路:

  1. 首先,我们可以使用双指针来解决这个问题。定义两个指针fast和slow,初始时都指向链表的头结点。
  2. 将fast指针向前移动n+1步,使得fast指针与slow指针之间相隔n个结点。
  3. 然后,同时将fast指针和slow指针向前移动,直到fast指针达到链表的末尾。
  4. 此时,slow指针指向的结点就是需要删除的倒数第n个结点的前一个结点。
  5. 我们修改slow指针的next指针,将其指向需要删除的倒数第n个结点的下一个结点,即完成了删除操作。
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode dummy = new ListNode(0);
        dummy.next = head;

        ListNode fast = dummy;
        ListNode slow = dummy;

        // 将fast指针向前移动n+1步
        for (int i = 0; i <= n; i++) {
            fast = fast.next;
        }

        // 同时移动fast和slow指针
        while (fast != null) {
            fast = fast.next;
            slow = slow.next;
        }

        // 修改slow指针的next指针
        slow.next = slow.next.next;

        return dummy.next;
    }
}

在这里插入图片描述

三、面试经典 150 题-19

数组 / 字符串

3.1 题目

反转字符串中的单词

给你一个字符串 s ,请你反转字符串中 单词 的顺序。

单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。

返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。

注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。

 

示例 1:

输入:s = "the sky is blue"
输出:"blue is sky the"
示例 2:

输入:s = "  hello world  "
输出:"world hello"
解释:反转后的字符串中不能存在前导空格和尾随空格。
示例 3:

输入:s = "a good   example"
输出:"example good a"
解释:如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。
 

提示:

1 <= s.length <= 10^4
s 包含英文大小写字母、数字和空格 ' '
s 中 至少存在一个 单词

3.2 题解

解题思路:

  1. 我们可以从字符串末尾开始遍历,使用StringBuilder来构建结果字符串。
  2. 当遇到空格时,表示当前单词的结束位置为end,我们将该单词添加到结果字符串中。
  3. 遍历完成后,得到了反转后的单词顺序,但是可能包含多余的空格,我们需要去除多余的空格。
  4. 最后返回处理后的结果字符串即可。
public class Solution {
    public String reverseWords(String s) {
        StringBuilder sb = new StringBuilder();
        int end = s.length();

        for (int i = s.length() - 1; i >= 0; i--) {
            if (s.charAt(i) == ' ') {
                end = i;
            } else if (i == 0 || s.charAt(i - 1) == ' ') {
                if (sb.length() != 0) {
                    sb.append(' ');
                }
                sb.append(s, i, end);
            }
        }

        return sb.toString();
    }
}

在这里插入图片描述

至此,挑战100天 AI In LeetCode Day17(热题+面试经典150题)完成,后续会持续调整;查阅过程中若遇到问题欢迎留言或私信交流。

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

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

相关文章

智能优化算法应用:基于鲸鱼算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于鲸鱼算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于鲸鱼算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鲸鱼算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

Nginx(八) aio sendfile directio 组合使用测试(1)

thread_pool default threads32 max_queue65535; http {aio threadsdefault;directio 2m;sendfile on;sendfile_max_chunk 1m;#### Gzip压缩服务配置#gzip off; # 设置是否开启gzip压缩服务&#xff0c;用于提高传输速度&#xff0c;默认关闭(off)。#gzi…

告别软件代码,硬件攻城狮也能DIY的 PD DRP+OTG 芯片来了

随着 USB-C 接口的普及&#xff0c;越来越多的设备开始采用这种接口。由于 USB-C接口的高效性和便携性&#xff0c;使各种设备之间的连接和数据传输变得非常方便快捷&#xff0c;它们不仅提供了强大的功能&#xff0c;还为我们的日常生活和工作带来了极大的便利&#xff0c;USB…

烧烤店点餐外卖配送管理小程序作用如何

烧烤是人们爱吃的食品之一&#xff0c;尤其到了晚上商业小吃街&#xff0c;烧烤店里往往是坐满了人&#xff0c;甚至还有排队的&#xff0c;从业商家众多&#xff0c;足可见该餐饮细分领域在市场中的欢迎程度。 而在实际经营中&#xff0c;烧烤店经营痛点也不小。 随着互联网…

什么是LASSO回归,怎么看懂LASSO回归的结果

随着机器学习的发展&#xff0c;越来越多SCI文章都使用了更多有趣、高效的统计方法来进行分析&#xff0c;LASSO回归就是其中之一。很多小伙伴听说过LASSO&#xff0c;但是对于LASSO是什么&#xff0c;有什么用&#xff0c;怎么才能实现&#xff0c;大家可能一头雾水。今天的文…

HarmonyOS安装三方库遇到的问题

使用开发电脑系统为&#xff1a;MacOS, 开发工具为&#xff1a;DevEco-Studio版本号3.1.1 Release。在控制栏使用终端工具输入命令&#xff1a;ohpm install ohos/lottie遇到的第一个问题如下图。 解决方案&#xff1a; 1、在首选项中找到ohpm的安装路径。 2、打开bash_profil…

我的创作纪念日-----MySql服务

MySql服务 1.什么是数据库 1.1.数据 描述事物的符号记录&#xff0c;可以是数字文字、图形、图像、声音、语言等&#xff0c;数据有多种形式&#xff0c;它们都可以经过数字化后存入计算机。 1.2.数据库 存储数据的仓库&#xff0c;是长期存放在计算机内、有组织、可共享的大…

基于springboot实现实习管理系统的设计与实现项目【项目源码+论文说明】

基于sprinmgboot实现实习管理系统的设计与实现演示 摘要 随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;实习管理也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;…

Spring的依赖注入,依赖注入的基本原则,依赖注入的优势

文章目录 Spring的依赖注入依赖注入的基本原则依赖注入有什么优势查找定位操作与应用代码完全无关。有哪些不同类型的依赖注入实现方式&#xff1f;构造器依赖注入和 Setter方法注入的区别 Spring的依赖注入 控制反转IoC是一个很大的概念&#xff0c;可以用不同的方式来实现。…

Vue打包错误UnhandledPromiseRejectionWarning: CssSyntaxError

错误详情如下&#xff1a; building for production...Error processing file: static/css/app.3d5caae7aaba719754d7d5c30b864551.css (node:33011) UnhandledPromiseRejectionWarning: CssSyntaxError: /Users/yt/Documents/BM/sims-plus/sims-website/static/css/app.3d5caa…

USB简介系列-02

系列文章目录 USB简介之二 文章目录 系列文章目录USB数据流一、USB总线二、USB收发器三、USB速率识别三、USB总线状态总结USB数据流 本部分讨论USB低速和全速模式下的数据流。 一、USB总线 想象一下USB主机根集器下级联了集线器和设备的设置,如下图示。我们需要记住的是,在…

Redis核心数据结构

目录 五种基础数据结构 string hash list set zset 用zset实现微博热搜 scan遍历 高频问题 五种基础数据结构 string 单个赋值set 批量赋值/取值 msetmget 设置不存在字符串setnx, 如果不存在, 则设置成功返回1, 如果存在返回0, 可以当做分布式锁 删除值 设置过期时…

Redis-缓存设计

缓存穿透 缓存穿透是指查询一个根本不存在的数据&#xff0c; 缓存层和存储层都不会命中&#xff0c; 通常出于容错的考虑&#xff0c; 如果从存储层查不到数据则不写入缓存层。 缓存穿透将导致不存在的数据每次请求都要到存储层去查询&#xff0c; 失去了缓存保护后端存储的…

使用360浏览器插件刷新网页

使用360浏览器插件刷新网页 1.打开360浏览器->扩展程序->更多扩展。 2.扩展中心->搜索”网页自动刷新”&#xff0c;然后安装。 3.在要学习的网页上&#xff0c;扩展程序中使用页面自动刷新插件。 4.如果页面打开慢就把10改大&#xff0c;比如改成15&#xff0…

指定训练使用的GPU个数,没有指定定gpu id,训练在其中两个gpu上执行,但是线程id分布在所有4个gpu上,为什么?如何解决?

目录 问题背景 1 线程id分布在所有gpu&#xff08;包括未启用的gpu&#xff09;上原因&#xff1a; 2 在解决这个问题时&#xff0c;可以采取以下步骤&#xff1a; 3 修正深度学习框架默认使用所有可见 GPU 的问题 1 TensorFlow&#xff1a; 2 PyTorch&#xff1a; 3 K…

FreeRTOS深入教程(中断管理)

文章目录 前言一、为什么要为中断设计一套API二、两套函数区别对比三、两类中断四、FreeRTOS中SYSTICK和PendSV中断的作用总结 前言 本篇文章来分析FreeRTOS中的中断&#xff0c;中断在FreeRTOS中也是非常重要的&#xff0c;那么这篇文章将带大家来学习一下FreeRTOS中的中断处…

go对rabbitmq基本操作

一、安装rabbitmq 1、直接使用docker拉取镜像 docker pull rabbitmq:3.82、启动容器 docker run \-e RABBITMQ_DEFAULT_USERadmin \-e RABBITMQ_DEFAULT_PASS123456 \-v mq-plugins:/plugins \--name rabbit01 \--hostname rabbit01 --restartalways \-p 15672:15672 \-p 5672:…

数据结构 / 计算机内存分配

1. Linux 32位系统内存分配 栈(stack): 先进后出, 栈区变量先定义的后分配内存, 栈区地址从高到低分配堆(heap): 先进先出, 栈区变量先定义的先分配内存, 堆区地址从低到高分配堆栈溢出: 表示的是栈区内存耗尽, 称为溢出. 例如: 每次调用递归都需要在栈区申请内存, 如果递归太深…

【LLM_04】自然语言处理基础_2

一、神经网络1、循环神经网络&#xff08;RNN&#xff09;2、门控循环单元&#xff08;GRU&#xff09;3、长短期记忆网络&#xff08;LSTM&#xff09;4、双向RNN5、卷积神经网络&#xff08;CNN&#xff09; 二、注意力机制1、注意力机制原理介绍2、注意力机制的各种变式3、注…

车载通信架构 —— 传统车内通信网络FlexRay(较高速度高容错、较灵活拓扑结构)

车载通信架构 —— 传统车内通信网络FlexRay(较高速度高容错、较灵活拓扑结构) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,…