首页 > 编程知识 正文

做oj好还是做leetcode好,javarandom函数用法

时间:2023-05-05 03:41:37 阅读:29224 作者:1602

ListNode相关要点简介,最近使用了LeetCode。 有相似而模糊的知识点。 现在总结一下。 本文是对Java中ListNode语法和操作的整理。 类结构为公共类列表节点{ int val; //节点值ListNode next; //ListNode对象ListNode () listnode () intval ) { this.val=val; }listnode(intval,ListNode next ) { this.val=val; this.next=next; }以上是官方文档的定义,说明如下。 链表是由数据和指针组成的数据结构,指针指向以下节点的Java ListNode是在Java定义中实现的链表结构ListNode,它本质上具有类的所有特性,如创建对象: 通过对象访问类的成员变量和成员方法创建ListNode对象。 ListNode node=new ListNode (; node.val表示当前节点的值,node.next表示当前节点指向的下一个节点的地址值。 当然,ListNode也具有通用性,通用性与不同的数据类型class ListNodeE{ //类名兼容。 Java类是自定义数据结构E val。 //数据:节点数据ListNodeE next; //对象:引用以下节点对象: Java没有指针的概念。 Java引用和c语言指针类似于listnode(eval )//构造方法。 构造方法和类名相同的this.val=val; //将收到的参数分配给当前类的val变量} } LeetCode例题合并两个有序链表。 将两个升序链表合并为一个新的升序链表并返回。 新的链表是通过连接给定两个链表的所有节点组成的。 (力钮21题)这个问题很简单,思路也很好找,我记得我刚在大学学习数据结构的时候就接触到了这个问题。 今天作为练习手,请带着这个问题熟悉ListNode的知识。

我的想法:先设定两个指针。 pre指针用于比较后的每次向后移动,resNode指针用于在最后一次返回整个新链。 首先比较两条链的第一个值,取较小的一个作为新链的第一个值,用pre指针连接。 此时,pre指针向后移动,从旧链中移除下一个刚连接的节点,然后比较两条链的第一个值……停止直到一条链为空,然后, 将非空链直接连接到新链后面的我的代码: class solution { publiclistnodemergetwolists (listnode l 1,ListNode l2 ) ) listnodereslists ListNode pre=reslist; if(L1==null ) { return l2; }elseif(L2==null ) { return l1; }elseif(L1==nullL2==null ) { return null; (else ) while(L1!=null l2!=null () if (L1.vall2. val ) ) { pre.next=l1; pre=l1; l1=l1.next; } else { pre.next=l2; pre=l2; l2=l2.next; } } pre.next=l1==null? l2 : l1; return reslist.next; }}很明显,本人的编码有点稚嫩,有些地方可以优化。 官方交流代码:思路1 :递归类解决方案{ publiclistnodemergetwolists (listnode l 1,ListNode l2 ) if ) L1==null } { return L2; }elseif(L2==null ) { return l1; }elseif(L1.vall2.val ) ) L1.next=mergetwolists ) L1.next,L2 ); 返回L1; }else{l2.next=mergetwolists(L1,L2.next ); 返回L2; }}构想2:class solution { publiclistnodemergetwolists (listnode l 1,ListNode l2 ) ) listnodeprehead=newlistnode(-1 ); ListNode prev=prehead; wile(L1!=null l2!=null(if ) L1.val=L2.val ) { prev.next=l1; l1=l1.next; } else { prev.next=l2; l2=l2.next; } prev=prev.next; (//合并后,l1和l2最多只能合并一个,所以如果将链表的末尾直接指向未合并的链表,prev.next=l1==null? l2 : l1; return prehead.next; }具体详情请参考链接。 https://leet code-cn.com/problems/merge-two-solted-lists/solution/he-bing-Liang-ge-you-Xu

集中兴趣打开知识之门,磨炼问题,就是寻找更好的解决问题的思路。 官方解决问题可能会让你变得开朗,评论区的大axddg可能会直呼你。 无论如何,请进入下一步。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。