Leetcode
主流算法
Big Skipper
The Chosen One.
展开
-
链表力扣142题---环形链表
这个公式告诉我们,重新设定fast在相遇的位置出发,slow在起点位置出发,都各走一步,那么它们最终都会相遇,并且相遇的位置为第一个节点的地址。假设这是一个链表,带环的是一个循环结构;假设起点到第一个节点的距离为L,第一个节点到相遇的位置为X,整个环的大小为C。fast:L+X+NC(因为不知道环的大小,所以不知道slow到相遇的位置时,fast转了几圈)这个题目是要我们找到环的第一个节点,返回它的地址,那么,我们应当该怎么做呢?有slow和fast从起点到相遇的位置为。...原创 2022-08-26 23:28:17 · 138 阅读 · 0 评论 -
力扣203题---反转链表
在遍历链表时,将当前节点的next指针改为指向前一个节点。由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。在更改引用之前,还需要存储后一个节点。最后返回新的头引用。进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。链表中节点的数目范围是 [0, 5000]...原创 2022-08-27 01:01:53 · 189 阅读 · 0 评论 -
LeetCode 387---First Unique Character in a String
Given a string s, find the first non-repeating character in it and return its index. If it does not exist, return -1.Example 1:Example 2:Example 3:Constraints:原创 2022-09-03 23:15:56 · 209 阅读 · 0 评论 -
数组力扣27题---移除元素
双指针法(快慢指针法)在数组和链表的操作中是非常常见的,很多考察数组、链表、字符串等操作的面试题,都使用双指针法。原创 2022-08-24 23:06:48 · 216 阅读 · 0 评论 -
链表力扣205题---反转链表
如链表:1 2 3 4 5,那么递归到最后一个结点5时,当前结点也就是4的下一个结点就是5,那么4-next=5,4->next->next = 5->next。同时返回新的头也就是5的位置,就如此递归返回,就完成了链表反转,同时反转后的头也找到了。(1)反转链表,可以采用头插法的思想,将每个元素从头到尾依次遍历,每次都将元素插入到头部,从而将链表反转。其实就是迭代法,如:1->2->3 变成 1...原创 2022-08-25 23:41:55 · 84 阅读 · 0 评论 -
数组力扣283题---移动零
O (n) n为序列长度。原创 2022-08-24 22:40:16 · 286 阅读 · 0 评论 -
LeetCode 3---Longest Substring Without Repeating Characters
Example 1:Output: 3Example 2:Output: 1Example 3:Output: 3。原创 2022-09-04 00:08:59 · 181 阅读 · 0 评论 -
数组力扣485题---最大连续1的个数
从左开始往右比较,如果是1开始计数;提示:1原创 2022-08-24 22:03:09 · 391 阅读 · 1 评论 -
链表力扣203题---移除链表元素
用temp表示当前节点,temp.next表示当前节点的下一个节点;最后返回 newHead.next,即将 newHead的下一个节点作为头节点返回。删除一个节点你要想到的代码:head.next=head.next.next;由于它是第一个节点,要删就得知道它的前一个节点,所以我们可以建一个虚拟节点。依次遍历每个节点,当temp.next=null;让它指向head,那么就得到一个新的链表;当要删除的处于第一个节点和最后一个节点。即找到该结点的前一个结点。...原创 2022-08-25 23:02:56 · 128 阅读 · 0 评论 -
力扣344题---反转字符串
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。输入:s = [“H”,“a”,“n”,“n”,“a”,“h”]输入:s = [“h”,“e”,“l”,“l”,“o”]输出:[“h”,“a”,“n”,“n”,“a”,“H”]输出:[“o”,“l”,“l”,“e”,“h”]s[i] 都是 ASCII 码表中的可打印字符。...原创 2022-08-26 23:39:01 · 144 阅读 · 0 评论 -
LeetCode 88 合并两个有序数组
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n。原创 2023-05-06 20:43:57 · 631 阅读 · 1 评论