温州专业网站制作公司,有什么兼职做设计的网站,网店设计与装修实训报告,软文网站备案如何查询【LeetCode】挑战100天 Day17#xff08;热题面试经典150题#xff09; 一、LeetCode介绍二、LeetCode 热题 HOT 100-192.1 题目2.2 题解 三、面试经典 150 题-193.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站#xff0c;提供各种算法和数据结构的题目热题面试经典150题 一、LeetCode介绍二、LeetCode 热题 HOT 100-192.1 题目2.2 题解 三、面试经典 150 题-193.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 sz2.2 题解
解题思路
首先我们可以使用双指针来解决这个问题。定义两个指针fast和slow初始时都指向链表的头结点。将fast指针向前移动n1步使得fast指针与slow指针之间相隔n个结点。然后同时将fast指针和slow指针向前移动直到fast指针达到链表的末尾。此时slow指针指向的结点就是需要删除的倒数第n个结点的前一个结点。我们修改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指针向前移动n1步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 题解
解题思路
我们可以从字符串末尾开始遍历使用StringBuilder来构建结果字符串。当遇到空格时表示当前单词的结束位置为end我们将该单词添加到结果字符串中。遍历完成后得到了反转后的单词顺序但是可能包含多余的空格我们需要去除多余的空格。最后返回处理后的结果字符串即可。
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题完成后续会持续调整查阅过程中若遇到问题欢迎留言或私信交流。