javascript -- leetcode 933. 最近的请求次数、206. 反转链表、83. 删除排序链表中的重复元素、141. 环形链表、349. 两个数组的交集

javascript数据结构队列、链表和集合的学习

  • leetcode 933. 最近的请求次数
    在这里插入图片描述
var RecentCounter = function() {
    
    
    this.p=[];
};

/** 
 * @param {number} t
 * @return {number}
 */
RecentCounter.prototype.ping = function(t) {
    
    
    this.p.push(t);
    while(this.p[0] < t - 3000){
    
    
        this.p.shift();
    //shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
    }
    return this.p.length;
};

/**
 * Your RecentCounter object will be instantiated and called as such:
 * var obj = new RecentCounter()
 * var param_1 = obj.ping(t)
 */
  • leetcode 206. 反转链表
    在这里插入图片描述
/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var reverseList = function(head) {
    
    
    let p1 = head;
    let p2 = null;
    while(p1){
    
    
        let tem = p1.next;
        p1.next = p2;
        p2 = p1;
        p1 = tem;
    }
    return p2;
};
  • leetcode 83. 删除排序链表中的重复元素
    在这里插入图片描述
/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
 //因为已经排好序,所以只要前后相同即重复
var deleteDuplicates = function(head) {
    
    
    let p1 = head;
    while(p1 && p1.next){
    
    
        if(p1.val == p1.next.val){
    
    
            p1.next = p1.next.next;
    }else{
    
    
        p1 = p1.next;
    }
}
    return head;
}
  • leetcode 141. 环形链表
    在这里插入图片描述
/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */

/**
 * @param {ListNode} head
 * @return {boolean}
 */
 //一快一慢循环,相等即是环
var hasCycle = function(head) {
    
    
    let p1 = head;
    let p2 = head;
    while(p1 && p2 && p2.next){
    
    
        p1 = p1.next;
        p2 = p2.next.next;
        if(p1 == p2){
    
    
            return true;
        }
    }
    return false;
};
  • leetcode 349. 两个数组的交集
    在这里插入图片描述
/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
var intersection = function(nums1, nums2) {
    
    
//使用集合对nums1去重 (Set)
//遍历nums1,筛选出nums2也包含的值
//集合给数组去重:
//const arr = [1,1,2,2,3]
//const arr2 = [...new Set(arr)];
    let arr = [...new Set(nums1)];
    //方法一:
    //return arr.filter(item => new Set(nums2).has(item));
    //方法二:
    return arr.filter(item => nums2.includes(item));
};```

猜你喜欢

转载自blog.csdn.net/sanjun_done/article/details/110247974