Leetcode-234. Palindrome Linked List

Given a singly linked list, determine if it is a palindrome.

Follow up:
Could you do it in O(n) time and O(1) space?

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @return {boolean}
 */
var isPalindrome = function(head) {
    if(head===null){
        return true;
    }
    var list=new Array();
    while(head){
        list.push(head.val);
        head=head.next;
    }
    while(list.length > 1){
        if(list.pop()!==list.shift()){
            return false;
        }
    }
    return true;
};

 

 JavaScript中的shift()和pop()函数
 

1.shift()函数

定义

该函数从从数组中删除第一项,并返回该删除项。

用法示例

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.shift()
console.log(fruits);

结果输出:

Orange,Apple,Mango

:该方法会改变数组的长度

2.pop()函数

定义

该函数从从数组中删除最后项,并返回该删除项。

用法示例

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.pop()
console.log(fruits);

结果输出:

Banana, Orange, Apple

3.unshift()定义和用法 

unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。

语法:arrayObject.unshift(newelement1,newelement2,....,newelementX)


参数描述:
newelement1 必需。向数组添加的第一个元素。
newelement2 可选。向数组添加的第二个元素。
newelementX 可选。可添加若干个元素。


返回值:arrayObject 的新长度。

说明:unshift() 方法将把它的参数插入 arrayObject 的头部,并将已经存在的元素顺次地移到较高的下标处,以便留出空间。该方法的第一个参数将成为数组的新元素 0,如果还有第二个参数,它将成为新的元素 1,以此类推。

请注意,unshift() 方法不创建新的创建,而是直接修改原有的数组。

提示和注释
注释:该方法会改变数组的长度。
注释:unshift() 方法无法在 Internet Explorer 中正确地工作!
提示:要把一个或多个元素添加到数组的尾部,请使用 push() 方法。

实例:在本例中,我们将创建一个数组,并把一个元素添加到数组的开头,并返回数组的新长度:

<script type="text/javascript">
var arr = new Array()
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"

document.write(arr + "<br />")
document.write(arr.unshift("William") + "<br />")
document.write(arr)
</script>
输出:
George,John,Thomas
4
William,George,John,Thomas

4.push() 定义和用法 

push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。

语法:arrayObject.push(newelement1,newelement2,....,newelementX)
参数描述:
newelement1 必需。要添加到数组的第一个元素。
newelement2 可选。要添加到数组的第二个元素。
newelementX 可选。可添加多个元素。
返回值:把指定的值添加到数组后的新长度。

说明:push() 方法可把它的参数顺序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是创建一个新的数组。push() 方法和 pop() 方法使用数组提供的先进后出栈的功能。

提示和注释:
注释:该方法会改变数组的长度。
提示:要想数组的开头添加一个或多个元素,请使用 unshift() 方法。

实例:在本例中,我们将创建一个数组,并通过添加一个元素来改变其长度:

<script type="text/javascript">
var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"

document.write(arr + "<br />")
document.write(arr.push("James") + "<br />")
document.write(arr)
</script>
输出:
George,John,Thomas
4
George,John,Thomas,James

posted @ 2016-01-27 14:28  Decmber  阅读(158)  评论(0编辑  收藏  举报