ARTS挑战第六周

Algorithm

203. Remove Linked List Elements


/**
Remove all elements from a linked list of integers that have value val.

Example:

Input:  1->2->6->3->4->5->6, val = 6
Output: 1->2->3->4->5

 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode removeElements(ListNode head, int val) {
        ListNode dummyHead = new ListNode(-1);
        dummyHead.next = head;

        ListNode prev = dummyHead;
        while (prev.next != null) {
            if (prev.next.val == val) {
                prev.next = prev.next.next;
            } else {
                prev = prev.next;
            }
        }

        return dummyHead.next;
    }
}

Review

Tip

关于决策
在做决策前可以采取如下几点建议:

  1. 找个信得过的人,把你的决定告诉他,听听他的意见
  2. 比较一下不同决定在不同情况下产生的结果,展望一下这些结果,花点时间“现场体验”一下
  3. 做好调查研究。不过不要被过量的信息淹没
  4. 列出每个决定可能产生的结果,列出所有的利弊得失按照优先级排列好
  5. 对于正在考虑的决定,把支持和反对的理由都写下来。一天之后,再去阅读你写的内容,要大胆质疑自己所做的假设

Share

静态
如果一个语言使用的策略支持编译器在编译时决定某个问题,那么可以说这个语言具有静态特性。
动态
如果一个语言只允许在程序运行时作出决定,那么可以说这个语言是动态语言。

推荐阅读更多精彩内容

  • 最终诉求? 拍摄、保存、播放、上传。就这四个步骤,当然首先拍摄就有许许多多的优化小功能,切换摄像头、单击跳帧焦距、...
    Carden阅读 6,394评论 0 50
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 3,032评论 0 18
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 4,453评论 1 15
  • 文|桃核MM 我等待地铁口的这片梨花已久了。每天从这里经过,总会不经意的望向这条路,树下停满了电动车,我希望它们都...
    心灵烟火阅读 50评论 0 2
  • 多年以来,我反复日夜深思,这些年来我所遇到的每一个人,所做的每一件事,所听到每一种声音,是否能真正的给我带来过什么...
    维卓阅读 28评论 0 0