public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode prehead = new ListNode(-1); ListNode prev = prehead; while (l1 != null && l2 != null) { if (l1.val <= l2.val) { prev.next = l1; l1 = l1.next; } else { prev.next = l2; l2 = l2.next; } prev = pre...
这是我第一题A了的代码 static ListNode partition(ListNode head, int m) { if (head == null || head.next == null) { return head; } ListNode head1 = new ListNode(m); ListNode head2 = new ListNode(m); ListNode pre = head1; ListNode after = head2; for (ListNode cur = head; cur...
ListNode cur = head; //当前节点指针 ListNode tmp; //后一节点指针 while(cur != null){ tmp = cur.next; cur.next = pre; pre = cur; cur = tmp; } return pre; } public static void main(String args[]){ ListNode head = new ListNode(0); ListNode node1 = new ListNode(1); head.ne...
1、对链表长度进行判断,如果不一样长需要对其尾部插入0作为补充 p->next=new listnode(0) 2、创建一个新链表用于存放结果 listnode* head=new listnode(-1) 3、需要对链表重新归置,因为前面的遍历是指针指向了最后一个val,通过链表重新赋值,使指针从头开始,否者只会输出一个最后一个指针的对应的val相加 4、需...
publicListNodereverse(ListNodehead){//head是begin的nextListNodebegin=newListNode(-1);begin.next=head;ListNodecur=begin.next;ListNodenext;ListNodenewTail=cur;ListNodepre=begin;while(cur!=null){next=cur.next;cur.next=pre;pre=cur;cur=next;}begin.next=pre;newTail.next=null;returnbegin.next;//如果...
public ListNode removeNthFromEnd (ListNode head, int n) { // write code here ListNode dummy = new ListNode(-1); dummy.next = head; ListNode cur, pre, fast; // pre记录上一个节点 pre = dummy; // cur 慢指针,fast快指针 cur = fast = dummy.next; int i = 1; // 快指针先走n-1步...
ListNode* pCur = findKthTail(pHead->next, k); if(pCur !=NULL) returnpCur; else{ num--;// 递归返回一次,num值减1 if(num ==0) returnpHead;//返回倒数第K个节点 returnNULL; } } 使用递归的方式实现仍然需要两次遍历链表,时间复杂度为O(n※2)。
ListNode node2 =newListNode(120); head.next = node1; node1.next = node2; node2.next =null; reverseList(head); }publicstaticListNodereverseList(ListNode head){ ListNode pre =null; ListNode cur = head; ListNode tem =null;while(cur !=null){//记录下一个节点tem = cur.next;//把当前节点...
只需要定义一个ListNode xx = new ListNode(0);即可。即只定义一个空链表。 不需要定义长度 。 赋值时 通过xx.next = new ListNode(4);来赋值,注意此时是赋值给下一个指针指向的位置,此时此链表一个值,值为4。 通过一个链表指向原链表地址,赋值完成时,打印原链表的指针地址。获取所有值。(后面的打印想不太...
nextnode=newListNode();int length=getLength(head);//获取链表长度nextnode=start;for(int i=1;i<length-n+1;i++){nextnode=nextnode.next;//移动指针}nextnode.next=nextnode.next.next;//删除指定结点ListNode res=start.next;returnres;}publicintgetLength(ListNode head){int length=0;while(head!=...