Lintcode Naive题

366 Fibonacci

题目最初、最容易想到的解法是利用递归,即(fibonacci(n-1) + fibonacci(n-2)),这种解法会在提交的时候报时间复杂度过高。

因此只能用按照题目中的书面意思翻译成代码的方式写出答案。

    public int fibonacci(int n)
    {
        int a = 0;
        int b = 1;
        int temp;
        for (int i = 1; i < n; i ++)
        {
            temp = b;
            b = a + b;
            a = temp;
        }
        return a;
    }

452 Remove Linked List Elements

题目最容易想到的是其一般情况,即需要移除非头部的元素。基本方法就是遍历LinkedList,如果下一个元素的值等于需要移除的值,就把本元素的next指针指向下下个元素。

对于特例情况,可以在LinkedList头部再加一个dummy的元素,指向head,最后返回的时候,将dummy.next返回回去。

public ListNode removeElements(ListNode head, int val) 
{
        ListNode dummy = new ListNode(0);
        dummy.next = head;
        head = dummy;

        while (head.next != null)
        {
            if (head.next.val == val)
            {
                head.next = head.next.next;
            }
            else
            {
                head = head.next;
            }
        }
        return dummy.next;
    }

463 Sort Integers

用任意一个排序算法即可

你可能感兴趣的:(Lintcode Naive题)