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
用任意一个排序算法即可