首页 > 其他分享 >leetcode 876. Middle of the Linked List

leetcode 876. Middle of the Linked List

时间:2024-10-17 15:21:11浏览次数:8  
标签:head ListNode 876 double List cnt next Middle single

leetcode 876. Middle of the Linked List

不容易出错的写法,慢

class Solution {
public:
    ListNode* middleNode(ListNode* head) {
        if(!head || !head->next) {
            return head;
        }
        ListNode *single = head, *double_ = head;
        int cnt = 0;
        while(double_) {
            cnt++;
            double_ = double_->next;
            if((cnt & 1) == 0) {
                single = single->next;
            }
        }
        return single;
    }
};

这里用cnt计数会拖慢速度,可以考虑优化边界条件判断,取消计数器

1ms写法

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

只要保证double_double_->next都不空,就不会访问到nullptr的成员,就不会出现runtime error

标签:head,ListNode,876,double,List,cnt,next,Middle,single
From: https://www.cnblogs.com/smartljy/p/18472400

相关文章

  • java_day13_ArrayList、Vector、LinkedList、泛型
    一、ArrayListCollection[接口]:List[接口]:元素有序,可以发生重复,有索引的概念ArrayList[具体的子类]:底层数据结构是数组,查询快,增删慢,线程不安全,效率高。Set[接口]:元素无序且唯一,没有索引代码案例publicclassArrayListDemo1{publicstaticv......
  • java_day12_Collection、List
    CollectionCollection【接口】:我们通过帮助文档发现,Collection是一个接口,不能直接new对象根据元素是否可以发生重复,继续分类-List【接口】元素可以发生重复,且有索引的概念ArrayList-Set【接口】元素不可以发生重复,没有索引借助ArrayList子类对......
  • python如何将list排序
    python提供了对list排序的两种方法1、使用list内建函数sort排序list.sort(key=None,reverse=False)eg:In [57]: l=[27,47,3,42,19,9]In [58]: l.sort()In [59]: lOut[59]: [3, 9, 19, 27, 42, 47]上面这种是直接对l列表里面的元素排序,sort()函数还提供......
  • List集合的具体子类:LinkedList
    一、LinkedList集合的特点:底层的数据结构是双链表,增删快,查询慢,线程不安全,效率高二、特殊功能:publicvoidaddFirst(Ee)及addLast(Ee)addFirst是在集合的第一个位置进行添加,addLast是在集合的最后一个位置进行添加publicEgetFirst()及getLast()getFirst是获取集合的第一......
  • Java中List的Stream常使用几种方法
    //测试数据List<Student>list=newArrayList<>();list.add(newStudent("张三","男",18));list.add(newStudent("李四","男",17));list.add(newStudent("红红","女&qu......
  • C++ STL迭代器、resize和reserve区别、map和unordered_map区别,vector和List区别、map
    1.STL迭代器删除元素迭代器失效是指在对容器进行修改时,原有的迭代器可能变得不可用。正确删除元素的方法是使用erase,并返回新的有效迭代器。示例代码#include<iostream>#include<vector>intmain(){  std::vector<int>vec={1,2,3,4,5};  //输出......
  • 苍穹外卖——报错:Parameter 'xxx' not found. Available parameters are [arg0, colle
    背景:在执行过程中,报错:Servlet.service()forservlet[dispatcherServlet]incontextwithpath[]threwexception[Requestprocessingfailed;nestedexceptionisorg.mybatis.spring.MyBatisSystemException:nestedexceptionisorg.apache.ibatis.binding.Binding......
  • List集合练习题1
    需求:遍历集合,当遇到mango的时候,向集合中添加一个元素"java"publicclassListDemo2{publicstaticvoidmain(String[]args){Listlist1=newArrayList();list1.add("hello");list1.add("apple");list1.add("......
  • List集合
    一、List是一个接口,其集合的特点是:元素可以发生重复,有序(指的是存入和输出的顺序一致)二、List集合中特有的成员方法:1.voidadd(intindex,Eelement)向List集合中的指定位置添加元素2.Eremove(intindex)在集合指定位置删除元素3.Eget(intindex)在集合的指定位置获取该元素4.Eset......
  • 【Java集合框架之ArrayList】
    一、ArrayList简介ArrayList类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。ArrayList继承了AbstractList,并实现了List接口。ArrayList类位于java.util包中,使用前需要引入它,语法格式如下:importjava.util.Arr......