【d46】【Java】【力扣】876.链表的中间结点

思路

先获得总体长度,

再得到中间节点 的索引,,这里的索引是从1开始的索引,而不是从0开始的索引(这种理解方式更简单)

排错:另一个思路:将链表都放进list,获得中间的数字,然后遍历找到这个数字的节点

存在问题:要保证节点的数字不重复才适用

代码

复制代码
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {

    }

    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 middleNode(ListNode head) {
            //将链表放进list里面 或者数组里,目的:统计个数
            int size = 0;
            ListNode cur = head;
            while (cur!=null){
                size++;
                cur = cur.next;
            }
            //寻找中间节点,
            // cur表示当前是第几个
            //先判断当前是第几个,是不是中间那个
            //如果不是,就向下走,并c++
            int curNum = 1;
            cur = head;
            while (curNum!=size/2+1){
                cur=cur.next;
                curNum++;
            }
            return cur;

        }
    }
}

记录

总结

很多时候,使用从1开始的索引,比使用从0开始的索引,更容易理解

相关推荐
剑挑星河月1 小时前
94.二叉树的中序遍历
java·算法·leetcode
2301_801184751 小时前
docker 工作
java·docker·容器
老前端的功夫1 小时前
【Java从入门到入土】47:构建工具:Maven与Gradle的战争
java·python·maven
aaPIXa6221 小时前
C++模板元编程:在编译期完成计算,实现零运行时开销
java·开发语言·c++
Sw1zzle1 小时前
算法入门(三):二分查找 - 基础模板 & 边界控制(Leetcode 704/35/278/34/69/367)
算法·leetcode
夜郎king1 小时前
RuoYi-Vue3 企业级后台快速落地实战指南
java·开发语言
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题 第156题】【06_Spring篇】第16题:Spring 用到了哪些设计模式?
java·spring·设计模式·代理模式·工厂模式
曹牧2 小时前
XML 解析过程中遇到 `org.xml.sax.SAXParseException
java·开发语言
要开心吖ZSH3 小时前
处方物流信息同步优化:从 36 秒到亚秒级的踩坑记录
java·数据库·mysql·性能优化
Wang's Blog3 小时前
JavaWeb快速入门: MyBatis入门与实战
java·mybatis