当前位置: 首页 > news >正文

【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题)完成,后续会持续调整;查阅过程中若遇到问题欢迎留言或私信交流。

http://www.lryc.cn/news/250407.html

相关文章:

  • 正则表达式的基本语法
  • 使用visual Studio MFC 平台实现对灰度图添加椒盐噪声,并进行均值滤波与中值滤波
  • Django HMAC 请求签名校验与 Vue.js 实现安全通信
  • 深度学习之循环神经网络
  • 与原有视频会议系统对接
  • C# Serilog--可记录异常完整路径
  • 鉴源实验室 | 汽车网络安全攻击实例解析(三)
  • php 中生成订单号
  • Jmeter工具+ant+jenkins实现持续集成
  • 基于SSM的经典电影推荐网站设计与实现
  • JavaScript中使用JSON的基本操作示例
  • 上拉、下拉电阻的作用
  • docker部署elasticsearch+kibana+head
  • Linux:vim的简单使用
  • Python---文件和文件夹操作
  • electron-vue运用及案例代码
  • 视频字幕处理+AI绘画,Runway 全功能超详细使用教程(4)
  • 令人疑惑的Promise相关问题
  • Spring 多数据源搭建
  • 【二分查找】LeetCode1970:你能穿过矩阵的最后一天
  • 利用python连接MySQL数据库并执行相关sql操作
  • jenkins配置
  • LeNet对MNIST 数据集中的图像进行分类--keras实现
  • Django的回顾的第4天
  • 点云从入门到精通技术详解100篇-基于三维点云的工件曲面轮廓检测与机器人打磨轨迹规划(中)
  • Mapper文件夹在resource目录下但是网页报错找不到productMapper.xml文件的解决
  • 22.Oracle中的临时表空间
  • 附录A 指令集基本原理
  • Unittest单元测试之unittest用例执行顺序
  • 海云安谢朝海:开发安全领域大模型新实践 人工智能助力高效安全左移