力扣刷题
文章平均质量分 52
༄༊心灵骇客༣
路漫漫其修远兮,吾将上下而求索。
展开
-
约瑟夫环数学问题——举一反三、触类旁通
约瑟夫环问题故事背景故事背景据说在罗马帝国时期,一群犹太士兵被罗马人包围,为了不当罗马人的俘虏,决定集体自杀。自杀的方式是第一个士兵会杀掉他左边的第二个士兵,同样第三个士兵会杀掉第四个士兵,第五个士兵会杀掉第六个士兵,依次类推,直到最后只剩下一个人。然后他再自杀,犹太士兵里有个人叫约瑟夫,他其实想投降保命,但又不敢明说,那么约瑟夫应该站在哪一个位置才能成为剩下的最后一个人?这样他就不用自杀,可以直接向罗马人投降。在人数不多的情况下,这个问题很好推测:假设有10个人,1->2,3->4,原创 2022-05-04 04:05:47 · 2831 阅读 · 0 评论 -
约瑟夫环问题 —— 算法
约瑟夫环问题前言约瑟夫环问题一约瑟夫环问题二约瑟夫环问题三约瑟夫环问题四约瑟夫环问题五约瑟夫环问题六约瑟夫环问题七约瑟夫环问题解决一 —— 模拟队列约瑟夫环问题解决二 —— 环形链表约瑟夫环问题解决三 —— 动态规划前言今天在浏览技术文章时看到的这么一个问题,感觉甚是有趣,专门来研究研究下,在浏览众多关于约瑟夫讲解的文章后,便进行一个较为详细的总结。约瑟夫问题,是一个计算机科学和数学中的问题,在计算机编程的算法中,类似问题又称为约瑟夫环,又称“丢手绢问题”。约瑟夫问题在各大刷题网站有各种各原创 2022-05-04 19:46:17 · 5708 阅读 · 0 评论 -
力扣刷题 -- 反转链表Ⅱ
反转链表Ⅱ前言解题思路代码实现前言初看这道题以为贼简单,但问题是变成只需一次扫描就能求出来,还是有点不简单的。题目:给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回反转后的链表 。如果仅仅只是求链表的整体翻转那是相当简单,但现在变成了求链表区间的部分翻转,需要考虑边界问题,同时还要考虑时间复杂度和空间复杂度的性能问题。嘿嘿嘿,好像不太好办呢。解题思路解决这道题的基本思想:原创 2022-04-02 12:20:17 · 823 阅读 · 0 评论 -
力扣刷题 -- 旋转链表
旋转链表前言解题思路代码实现前言今天遇到一道很有意思的链表题,这道题不难,没有算法相关的逻辑,考的就是coding能力以及对边界的把控能力。leetcode_61题目:给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。解题思路首先需要求出整个链表的长度n,将节点移动k个位置实际上类似循环链表的节点移动,只不过第n-k个节点要指向null。找到尾节点tail,并令tail = head,这样构成了一个环。接下来需要找到新的头结点,也就是第前n-k个节点p的下一节原创 2022-04-01 17:12:11 · 559 阅读 · 0 评论 -
力扣刷题 -- 对链表进行插入排序
给定单个链表的头 head ,使用 插入排序 对链表进行排序,并返回 排序后链表的头 。插入排序 算法的步骤:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直到所有输入数据插入完为止。下面是插入排序算法的一个图形示例。部分排序的列表(黑色)最初只包含列表中的第一个元素。每次迭代时,从输入数据中删除一个元素(红色),并就地插入已排序的列表中。对链表进行插入排序。原创 2022-03-07 19:47:44 · 182 阅读 · 0 评论 -
力扣刷题 -- 两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。/** * 描述 2. 两数相加 * https://leetcode-cn.com/problems/add-two-numbers/ * * @author lixinzhen * @create 2022/3/5 22:01 */public c原创 2022-03-07 11:57:06 · 190 阅读 · 0 评论 -
力扣刷题 -- 环形链表
这是一道经典面试题:给定一个链表,判断链表中是否有环。例如:给定 head = [3,2,0,-4],判断出链表中有一个环,其尾部连接到第二个节点。对于这道题的解题思路是采用快慢指针:给定两个指针慢指针slow和快指针fast,例如慢指针slow走一步,快指针fast走两步,当slow和fast(slow和fast指向的节点一样)相遇即有环。package 链表;/** * https://leetcode-cn.com/problems/linked-list-cycle/ * * @a原创 2021-06-19 03:01:45 · 281 阅读 · 0 评论 -
力扣刷题 -- 反转链表
这是一道面试题:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。例如给定:1->2->3->4->5-null 反转后:5->4->3->2->1-null对于这道题我们可以采用递归和迭代(非递归)两种方法实现递归:传入head如4,反转后为4->3->2->1-null,在串上节点5。非递归:利用head的next指向newHead,将节点一个一个串起来。package 链表;/** * https://l原创 2021-06-19 02:48:44 · 137 阅读 · 0 评论