0    课程地址

https://coding.imooc.com/lesson/207.html#mid=13434

 

1    重点关注

1.1    leetCode的代码  如何本地调试

详见3.1

 

1.2    遗忘的点

链表增加元素时,是根据前一个节点判断的

 

 

2    课程内容


3    Coding

3.1    leetCode的代码(上节的502问题)  如何本地调试

  •  链表类本地:
package com.company;
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; }

      /**
       * 传入数组的有参构造函数  增加,是用前一个元素去增 不要用当前元素,重点
       * @author weidoudou
       * @date 2022/11/1 7:08
       * @param vals 请添加参数描述
       * @return null
       **/
      public ListNode(int[] vals){
            if(vals.length==0||vals==null){
                  throw new IllegalArgumentException("传入的数组不能为空");
            }

            this.val = vals[0];
            ListNode pre = this;
            for(int i = 1;i<vals.length;i++){
                  pre.next = new ListNode(vals[i]);
                  pre = pre.next;
            }
      }


      @Override
      public String toString() {
            final StringBuffer sb = new StringBuffer("");
            ListNode cur = this;
            while (cur!=null){
                  sb.append(cur.val).append("->");
                  cur = cur.next;
            }
            sb.append("Null");
            return sb.toString();
      }
}

 

  • 测试类:
package com.company;

/**
 * Definition for singly-linked list.
 * 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 removeElements(ListNode head, int val) {
        //定义虚拟头节点
        ListNode dummyHead = new ListNode();
        dummyHead.next = head;

        ListNode preNode = dummyHead;
        //1?    判断非空
        while(preNode.next!=null){

            if(preNode.next.val==val){
                ListNode delNode = preNode.next;
                preNode.next = delNode.next;
                delNode.next = null;
            }else{
                preNode = preNode.next;
            }

        }

        return dummyHead.next;
    }

    public static void main(String[] args) {
        int[] nums = {1,2,6,3,4,5,6};
        ListNode listNode = new ListNode(nums);
        System.out.println(listNode);


        ListNode res =  new Solution().removeElements(listNode,6);
        System.out.println(res);
    }
}

 

 

  • 测试结果:
1->2->6->3->4->5->6->Null
1->2->3->4->5->Null

Process finished with exit code 0

 

posted on 2022-11-01 07:36  菜鸟乙  阅读(20)  评论(0编辑  收藏  举报