链表的天然递归性

2019-04-07  本文已影响0人  xin激流勇进
/**
 * 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));
    }
}

上一篇下一篇

猜你喜欢

热点阅读