链表习题-力扣oj (附加思路版)

这篇具有很好参考价值的文章主要介绍了链表习题-力扣oj (附加思路版)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

LCR 140. 训练计划 IIhttps://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/

        给定一个头节点为 head 的链表用于记录一系列核心肌群训练项目编号,请查找并返回倒数第 cnt 个训练项目编号。

思路:双指针,快指针先走cnt步然后快慢指针同时向前走,当快指针为空时慢指针所在位置即为倒是第cnt个编号

链表习题-力扣oj (附加思路版),题解,c++,链表,leetcode 

class Solution {
public:
    ListNode* trainingPlan(ListNode* head, int cnt) {
       ListNode *fast=head,*slow=head;
       for(int i=1;i<=cnt;i++)
       fast=fast->next;
       while(fast)
       {
           fast=fast->next;
           slow =slow->next;
       }
       return slow;
    }
};

141. 环形链表https://leetcode.cn/problems/linked-list-cycle/

        如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true 。 否则,返回 false 。

思路:双指针,一个快指针一个慢指针,快指针每次走两步(有风险:快指针可能为要特殊处理一下)慢指针走一步。如果两个指针能相遇则有环,如果不能相遇则没有环

class Solution {
public:
    bool hasCycle(ListNode *head) {
        ListNode *fast=head,*slow=head;
      while(fast&&fast->next){
          fast=fast->next->next;
          slow=slow->next;
          if(fast==slow)
            return 1;
      }
      return false;
    }
};

26. 删除有序数组中的重复项https://leetcode.cn/problems/remove-duplicates-from-sorted-array/

        给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。

考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

  • 更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
  • 返回 k 。

思想:双指针,快指针如果与慢指针相等快指针++,当快指针不等于慢指针时,慢指针++快慢赋值给慢指针,然后快指针++。直到快指针遍历完数组结束。

链表习题-力扣oj (附加思路版),题解,c++,链表,leetcode

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
      int fast=1,slow=0;
     if(nums.size()==1)
        return 1;
     while(fast<nums.size())
     {
         if(nums[fast]==nums[slow])
            fast++;
         else
         {
            slow++;
            nums[slow]=nums[fast];
            fast++;
         }
     }
     return slow+1;
    }
};

53. 最大子数组和https://leetcode.cn/problems/maximum-subarray/

        给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。

思路:将数组和与最大和比较,如果数组和大于最大和则更新,否则最大和加下一位数组元素判断有没有当前最大和大。

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int max=INT_MIN;
        int sum=0;
        for(int i=0;i<nums.size();i++)
        {
            sum+=nums[i];
            if(sum>max)max=sum;
            if(sum<0)sum=0;
        }
        return max;
    }
};

876. 链表的中间结点https://leetcode.cn/problems/middle-of-the-linked-list/

        给你单链表的头结点 head ,请你找出并返回链表的中间结点。

        如果有两个中间结点,则返回第二个中间结点。

思路:快指针走两步慢指针走一步

class Solution {
public:
    ListNode* middleNode(ListNode* head) {
        ListNode* fast=head,*slow =head;
        while(fast&& fast->next)
        {
            fast=fast->next->next;
            slow=slow->next;
        }
        return slow;
    }
};

21. 合并两个有序链表https://leetcode.cn/problems/merge-two-sorted-lists/

        将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 

思路:当头节点和中间节点的处理方式不同时手动添加一个虚头节点

class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        //创建虚头节点
         ListNode* Head = new ListNode();
         ListNode* Tail = Head;
         while(l1 && l2)
         {
             if(l1->val<=l2->val)
             {
                 Tail->next=l1;
                 l1=l1->next;
             }
             else
             {
                 Tail->next=l2;
                 l2=l2->next;
             }
             Tail=Tail->next;
         }
        //判断剩余
         if(l1) Tail->next=l1;
         if(l2) Tail->next=l2;
         return Head->next;
    }
};

 文章来源地址https://www.toymoban.com/news/detail-837575.html

 

到了这里,关于链表习题-力扣oj (附加思路版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 模拟实现atoi函数(将数字字符串转换为整型)附加leetcode练习题

    各位朋友们,大家好啊!今天我为大家分享的知识是如何模拟实现atoi函数。相信大家如果能够理解这个知识,对大家以后的刷题是有帮助的。 我们要想实现某个函数,我们肯定要先知道这个函数的作用是什么,然后我们再根据它的作用来自己实现。我们先来看看stoi函数在库

    2023年04月19日
    浏览(45)
  • 力扣链表OJ面试题,那些你不懂的全新版本解法

    孤独的时候看世界更清晰  前言 数据结构的逻辑性是非常强的,所以单单看代码很难搞懂,这里博主对每一道题目都进行了非常细致的图文详解,每一道题目都是非常经典的面试OJ题,每一道题我都附上了对应的力扣链接,本文主要是 较为简单 的题目, 比较难的题目 将会在

    2024年02月04日
    浏览(36)
  • 链表OJ(LeetCode)

    法一:遍历删除 法二:循环尾插 法三:带哨兵位的头结点 法一:循环头插 法二:改变指针指向 法一:归并插入 法二:带哨兵位的头结点 n是偶数能追上 n是奇数 C-1是偶数能追上 n是奇数 C-1是奇数追不上 slow进环后在一圈内一定会被fast追上:slow进环后 fast一定在slow前面 二者

    2024年02月16日
    浏览(22)
  • 力扣第92题——反转链表 II(C语言题解)

    给你单链表的头指针  head  和两个整数  left  和  right  ,其中  left = right  。请你反转从位置  left  到位置  right  的链表节点,返回  反转后的链表  。 示例 1: 示例 2: 提示: 链表中节点数目为  n 1 = n = 500 -500 = Node.val = 500 1 = left = right = n 我们以下图中黄色区域的链

    2024年01月23日
    浏览(32)
  • 每日OJ题_DFS回溯剪枝⑨_力扣39. 组合总和(两种思路)

    目录 力扣39. 组合总和 解析代码1 解析代码2 39. 组合总和 LCR 081. 组合总和 难度 中等 给你一个  无重复元素  的整数数组  candidates  和一个目标整数  target  ,找出  candidates  中可以使数字和为目标数  target  的 所有   不同组合  ,并以列表形式返回。你可以按  任意顺序

    2024年04月28日
    浏览(23)
  • 每日OJ题_算法_递归④力扣24. 两两交换链表中的节点

    目录 ④力扣24. 两两交换链表中的节点 解析代码 24. 两两交换链表中的节点 难度 中等 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1: 示例 2: 示例 3: 提示: 链表

    2024年02月20日
    浏览(33)
  • 【力扣 445】两数相加 II C++题解(链表+模拟+数学+头插法)

    给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例1: 输入:l1 = [7,2,4,3], l2 = [5,6,4] 输出:[7,8,0,7] 示例2: 输入:l

    2024年01月24日
    浏览(31)
  • 单链表OJ题:LeetCode--141.环形链表

    朋友们、伙计们,我们又见面了,本期来给大家解读一下LeetCode中的第141道单链表OJ题,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! 数据结构与算法专栏 :数据结构与算法 个  人  主  页  :stackY、 C 语 言 专 栏 :C语言:从入门到精通 LeetC

    2024年02月08日
    浏览(44)
  • 单链表OJ题:LeetCode--234.回文链表

    朋友们、伙计们,我们又见面了,今天给大家带来的是LeetCode中234题:回文链表 数据结构  :数据结构专栏 作       者  :stackY、 LeetCode:LeetCode刷题训练营 LeetCode--234.回文链表:https://leetcode.cn/problems/palindrome-linked-list/  牛客网 - OR36 - 链表的回文结构:https://www.nowcoder.co

    2024年02月04日
    浏览(35)
  • 单链表OJ题:LeetCode--160.相交链表

    朋友们、伙计们,我们又见面了,本期来给大家解读一下LeetCode中第160道单链表OJ题,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! 数据结构与算法专栏 : 数据结构与算法 个  人  主  页  : stackY、 C 语 言 专 栏 : C语言:从入门到精通  Lee

    2024年02月08日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包