美文网首页
2021-04-11算法打卡

2021-04-11算法打卡

作者: 北暖37 | 来源:发表于2021-04-11 20:00 被阅读0次

    1、给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。

    示例1:
    输入:head = [4,2,1,3]
    输出:[1,2,3,4]
    
    示例2:
    输入:head = [-1,5,3,4,0]
    输出:[-1,0,3,4,5]
    
    /**
     * Definition for singly-linked list.
     * function ListNode(val, next) {
     *     this.val = (val===undefined ? 0 : val)
     *     this.next = (next===undefined ? null : next)
     * }
     */
    /**
     * @param {ListNode} head
     * @return {ListNode}
     */
    var sortList = function(head) {
        if (!head || !head.next) return head
        let arr = []
        for (;head; head = head.next) {
            arr.push(head)
        }
        arr.sort((a,b)=> a.val - b.val)
        for(let i = 0; i < arr.length; i++) {
            arr[i].next = arr[i+1] || null
        }
    
        return arr[0]
    };
    

    2、汉诺塔问题
    在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制:
    (1) 每次只能移动一个盘子;
    (2) 盘子只能从柱子顶端滑出移到下一根柱子;
    (3) 盘子只能叠在比它大的盘子上。

    请编写程序,用栈将所有盘子从第一根柱子移到最后一根柱子。你需要原地修改栈。

    示例1:
    输入:A = [2, 1, 0], B = [], C = []
    输出:C = [2, 1, 0]
    
    示例2:
    输入:A = [1, 0], B = [], C = []
    输出:C = [1, 0]
    
    /**
     * @param {number[]} A
     * @param {number[]} B
     * @param {number[]} C
     * @return {void} Do not return anything, modify C in-place instead.
     */
    var hanota = function(A, B, C) {
        if(A.length === 0) {
            return;
        }
        while(A.length > 1) {
            B.push(A.pop())
        }
        C.push(A.pop());
        while(B.length > 0) {
            A.push(B.pop());
        };
        hanota(A, B, C)
    };
    

    相关文章

      网友评论

          本文标题:2021-04-11算法打卡

          本文链接:https://www.haomeiwen.com/subject/hiaakltx.html