最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 算法打卡-leetcode-20210406

    正文概述 掘金(天秤的异端)   2021-04-06   371

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

    经典汉诺塔问题,我还在默默计算当圆盘都在B柱时如何将盘子移回A柱,想了好久,实在想不出一个有规律的解法,就看了题解,结果推荐题解是直接把A柱和B柱的门牌号给换了,难怪评级只有简单。。。
    递归的经典问题与解答,没有什么好讲的了。

    /**
     * @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) {
        function move(length, A, B, C) {
            if (length === 1) {
                C.push(A.pop());
            } else {
                move(length - 1, A, C, B);
                C.push(A.pop());
                move(length - 1, B, A, C);
            }
        }
    
        move(A.length, A, B, C);
    };
    

    算法打卡-leetcode-20210406

    2. 排序链表 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。
    进阶: 你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?

    目前常用的算法里面,只有快排和归并排序时间复杂度是O(n log n),我选择了归并排序,因为在链表我这一生之敌面前,归并排序的思想好理解一些。 重点就是快慢指针的定义,和合并算法的编写,也是递归思想,没啥好说的。

    /**
     * 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) {
        function sortList(head){
            if(head == null || head.next == null){
                return head;
            }
            let fast = head;
            let slow = head;
            while(fast.next != null && fast.next.next != null ){
                fast = fast.next.next;
                slow = slow.next;
            }
            fast = slow;
            slow = slow.next;
            fast.next = null;
            fast = sortList(head);
            slow = sortList(slow);
            
            return merga(fast, slow);
        }
    
        function merga(head1, head2){
            if(head1 == null){
                return head2;
            }
            if(head2 == null){
                return head1;
            }
            let result, p;
            if(head1.val > head2.val){
                result = head2;
                head2 = head2.next;
            } else {
                result = head1;
                head1 = head1.next;
            }
            p = result;
            while(head1 != null && head2 != null){
                if(head1.val > head2.val){
                    p.next = head2;
                    head2 = head2.next;
                } else {
                    p.next = head1;
                    head1 = head1.next;
                }
                p = p.next;
            }
            if(head1 != null){
                p.next = head1;
            } else if(head2 != null){
                p.next = head2;
            }
            return result;
        }
    
        return sortList(head);
    };
    

    算法打卡-leetcode-20210406


    起源地下载网 » 算法打卡-leetcode-20210406

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元