美文网首页
链表的天然递归性

链表的天然递归性

作者: xin激流勇进 | 来源:发表于2019-04-07 18:10 被阅读0次
    /**
     * leetcode 203
     * Definition for singly-linked list.
     * public class ListNode {
     * int val;
     * ListNode next;
     * ListNode(int x) { val = x; }
     * }
     * <p>
     * 删除链表中等于给定值 val 的所有节点。
     * <p>
     * 示例:
     * <p>
     * 输入: 1->2->6->3->4->5->6, val = 6
     * 输出: 1->2->3->4->5
     */
    class Solution3 {
        public ListNode removeElements(ListNode head, int val) {
            /**
             * 链表的天然递归性
             * 1 将链表拆成更小的链表 则最小的链表为null
             * 2 判断链表头是否满足条件 再做相关操作
             *
             */
    
            if (head == null) {
                return null;
            }
            /*
            ListNode res = removeElements(head.next, val);
            if (head.val == val) {
                return res;
            } else {
                head.next = res;
                return head;
            }*/
    
            head.next = removeElements(head.next, val);
            /*
            if (head.val == val) {
                return head.next;
            } else {
                return head;
            }*/
    
            return head.val == val ? head.next : head;
    
    
        }
    
        public static void main(String[] args) {
            int[] a = {2, 2, 3, 4, 2, 3, 2};
            ListNode listNode = new ListNode(a);
    
            System.out.println(listNode);
            ListNode listNode1 = new Solution3().removeElements(listNode, 2);
            System.out.println(listNode1);
    
    //        ListNode curNode = listNode;
    //
    //        while (curNode != null) {
    //            System.out.println(curNode.val);
    //            curNode = curNode.next;
    //        }
    
        }
    }
    
    public class Sum {
        public static int sum(int[] arr) {
            return sum(arr, 0);
        }
    
        private static int sum(int[] arr, int l) {
            // 最基本的问题 如果索引与数组长度相等 说明数组中没有元素了
            if (l == arr.length) {
                return 0;
            } else {
                int x = sum(arr, l + 1);
                int res = arr[l] + x;
                return res;
            }
        }
    
        public static void main(String[] args) {
            int[] a = {1, 3, 5, 8, 10};
            System.out.println(sum(a));
        }
    }
    
    

    相关文章

      网友评论

          本文标题:链表的天然递归性

          本文链接:https://www.haomeiwen.com/subject/vzgsiqtx.html