首页 文章 精选 留言 我的

精选列表

搜索[双层思维链],共10003篇文章
优秀的个人博客,低调大师

双层校验云原生架构,精准划分个股停牌、复牌数据流边界

依托腾讯云弹性 CVM、时序数据库 CTSDB、函数工作流 SCF 搭建多标的 A 股批量回测、日内高频交易仿真系统时,多数量化研发人员仅针对常规交易时段设计 Tick 采集逻辑,并未适配交易所价格异动临时停牌的特殊场景。个股触发临停后实时 Tick 数据流直接中断,标的复牌时,云端采集程序缺少标准化判定逻辑,无法精准定位行情接口恢复推送的时间边界,进而引发一系列影响模型可信度的问题:复牌集合竞价首批逐笔数据丢失、批量回测数据集产生持续性时序断层、自动化交易服务误判市场无成交而触发风控拦截。

优秀的个人博客,低调大师

每日一博 | 单链表解题思维

一、概念 链表由一组零散的结点通过指针连接而成,每个结点都包含当前结点内容和后继指针。相对于数组,它不受固于存储空间的限制,可更快捷地进行插入和删除操作,主要有以下几种类型: 1、单链表 指针指向下一个节点,终点指向null 2、双链表 指针指向前一个节点和后一个节点 3、循环链表 最后一个节点指向第一个节点 在解决链表相关问题时,先执行三步骤,再敲下代码会更清晰 确定解题的链表类型 画图理清思路 确定边界条件 不同于数组,JS官方还没有提供一个直接的链表API,可通过对象的方式模拟出链表,其结构为 const head = { data: 1, next: { data: 2, next: null, }, }; 二、leetcode 最常见相关题型 1、合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的 示例: 输入: l1 = [1,2,4], l2 = [1,3,4] 输出: [1,1,2,3,4,4] 步骤: 解题的链表类型是单链表 思路: l1 与 l2 是有序递增的,因此 l1.val 与 l2.val 的较小值就是合并后链表的最小值 依次递归 大小节点的比较,直到 l1 l2 均为 null 边界条件:递归到任意链表为 null 即可停止,并将 next 指向另外的链表 var mergeTwoLists = function(l1, l2) { if (l1 === null) { return l2 } else if (l2 === null) { return l1 } else if (l1.val < l2.val) { l1.next = mergeTwoLists(l1.next, l2) return l1 } else { l2.next = mergeTwoLists(l2.next, l1) return l2 } }; 2、环形链表 给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。如果链表中存在环,返回 true 否则返回 false 。要求用 O(1) 内存解决此问题 pos 表示链表尾连接到链表中的位置,若 pos 是 -1 则该链表中没有环 示例: 输入:head = [3,2,0,-4], pos = 1 输出:true // 链表中有一个环,其尾部连接到第二个节点 步骤: 解题的链表类型是单链表 思路: 龟兔赛跑算法:利用快慢双指针,快指针走两步,慢指针走一步 如果链表存在环,则两个速度不同的指针必定会相遇。并且从相遇点和链表头结点同时往下走,会在环起点相遇 边界条件: 快指针指向 null 停止,无环 快慢指针指向同一个节点,有环 var hasCycle = function(head) { if(!head || !head.next) return false; let slow = head.next; let fast = head.next.next; while(slow !== fast ) { if(!fast || !fast.next) return false; slow = slow.next; fast = fast.next.next; } return true } 3、反转链表 给你单链表的头节点 head ,请你使用迭代或递归地反转链表,并返回反转后的链表 示例: 输入: head = [1,2,3,4,5] 输出: [5,4,3,2,1] 步骤: 解题的链表类型是单链表 迭代思路: 将单链表的每个节点的后继指针指向它的前驱节点 边界条件: 当链表 null 停止 链表仅有一个节点 var reverseList = function(head) { if(!head || !head.next) return head; let prev = null; let cur = head; while(cur) { const curNext = cur.next; // 反转后赋值给prev指针 cur.next = prev; prev = cur; // 链接到下一个节点 cur = curNext; } return prev }; 4、链表的中间结点 给定一个头结点为 head 的非空单链表,返回链表的中间结点,如果有两个中间结点,则返回第二个中间结点(给定链表的结点数介于 1 和 100 之间) 示例: 输入: [1,2,3,4,5] 输出: 3 输入: [1,2,3,4,5,6] 输出: 4 步骤: 解题的链表类型是单链表 思路: 快指针p2的位移是慢指针p1的2倍,所以当p2走到链表尾部时,p1刚好走了一半,指向链表的中点。 下题同理 边界条件: 快指针指向 null 时,慢指针刚好处于中间位置 var middleNode = function(head) { if(!head || !head.next) return head; let slow = head; let fast = head; while(fast && fast.next) { slow = slow.next; fast = fast.next.next; } return slow }; 5、删除链表倒数第 n 个结点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点 示例: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 步骤: 解题的链表类型是单链表 思路: 快指针一次性走完n个节点,接着两个指针一起往后走,直到快指针指向null,此时慢指针就是倒数第n个节点 添加哨兵处理第n个节点 边界条件: 快指针指向 null 时,慢指针所在位置就是倒数第n个节点 const removeNthFromEnd = function (head, n) { // 哨兵 let preHead = new ListNode(0) preHead.next = head let slow = preHead; let fast = preHead; // 先走n步 while (n--) { fast = fast.next } // 一起走 while (fast && fast.next) { fast = fast.next slow = slow.next } slow.next = slow.next.next return preHead.next; }; 6、回文链表 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 示例: 输入: head = [1,2,2,1] 输出: true 步骤: 解题的链表类型是单链表 思路: 借助数组,将链表丢进数组 设置前后指针,前后指针理应相同,若不同则不是回文 循环结束若没有返回false则是回文 边界条件: 前后指针不一致 循环结束 var isPalindrome = function (head) { const res = [] while (head) { res.push(head.val); head = head.next } let pre = 0; let last = res.length - 1; while (pre < last) { if (res[pre] !== res[last]) return false; pre++; last--; } return true } 8、相交链表 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。题目数据保证整个链式结构中不存在环。 注意: 函数返回结果后,链表必须 保持其原始结构(需复制新的链表) 如果两个链表没有交点,返回 null 程序尽量满⾜ O(n) 时间复杂度,且仅⽤ O(1) 内存 示例: 输入:intersectVal = 4, listA = [1,2,3,4,5], listB = [6,7,4,5], skipA = 3, skipB = 2 // 在 A 中,相交节点前有 3 个节点;在 B 中,相交节点前有 2 个节点 输出:Intersected at '4' // 相交节点的值为 4 (注意,如果两个链表相交则不能为 0) 步骤: 解题的链表类型是单链表 思路: 同上,寻找AB链表的高度差并消除,已知相交点之后的长度必须相等 AB双指针同时前进,当短链表B的指针遍历完成时,双指针的长度差刚好是双链表的长度差,将B指针指向A链表的头节点,跟着A指针再一次遍历,直到A指针遍历完成 同样将A指针指向B链表的头节点,B指针向前一步,则消除了链表的高度差 边界条件: 指针指向null时,切换指向链表 AB链表值相等 var getIntersectionNode = function (headA, headB) { if (!headA || !headB) return null; let pA = headA; let pB = headB; while (pA !== pB) { pA = pA !== null ? pA.next : headB; pB = pB !== null ? pB.next : headA; } return pA; } 9、链表求和 给定两个用链表表示的整数,每个节点包含一个数位,这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并用链表形式返回结果 示例: 输⼊:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295 输出:2 -> 1 -> 9,即912 步骤: 解题的链表类型是单链表 思路: 输出的是新链表,因此需要创建一个链表 由于是反向存储,则链表从个位数开始计算,大于十则进位 进位,首先考虑⽤carry存储每次的进位,余数存储进创建的节点 边界条件: 双链表指向null时,遍历完成 遍历完成,carry不为0,则还需前进一位 const addTwoNumbers = function (l1, l2) { // 哨兵 let preHead = new ListNode(0) let carry = 0; let pre = preHead; while (l1 || l2) { let sum = 0; if (l1) { sum += l1.val l1 = l1.next } if (l2) { sum += l2.val l2 = l2.next } sum += carry carry = Math.floor(sum / 10) pre.next = new ListNode(sum % 10) pre = pre.next } if (carry > 0) { pre.next = new ListNode(carry) pre = pre.next } return preHead.next } 进阶:思考⼀下,假设这些数位是正向存放的,⼜该如何解决呢? 输⼊:(6 -> 1 -> 7) + (2 -> 9 -> 5),即617 + 295 输出:9 -> 1 -> 2,即912

优秀的个人博客,低调大师

物联网创新 要具备五种思维

早在凯鹏华盈投资公司担任普通合伙人期间,特拉·瓦萨洛就对居家物品与网络的联姻,也就是人们通常所说的“物联网”,产生了浓厚兴趣。她投资了好几家成功的物联网概念公司。Dropcam公司可以让人们通过Wi-Fi视频摄像头随时监控家里的孩子和宠物。Nest Labs公司则有望通过由传感器驱动的Wi-Fi联网恒温器来改变世界。 在凯鹏华盈公司工作12年后,瓦萨洛现在已转型为一名独立投资人。上文提到的两家公司已经被谷歌收购,物联网的热度有增无减。瓦萨洛称:“物联网将 是下一个创新前沿。”瓦萨洛曾在IDEO公司担任产品开发员,拥有斯坦福大学商业管理学和机械工程学双硕士学位。她表示:“物联网将是继iPhone、智 能手机和平板电脑生态系统之后的下一个新平台领域。” 在今年5月1日出席了由斯坦福商学院企业家研究中心赞助的一场研讨会后,瓦萨洛进一步探讨了如何在物联网领域进行创新。 改造旧有模式 瓦萨洛表示,自从互联网被发明之日起,人们就开始尝试将互联网与周身环境连接起来。如今,硬件的发展已经有了很大变化。现在的智能手机技术成本大大 降低,传感器技术已经非常先进,智能设备已经可以理解它们的运作环境,并且可以采取一定的行动,使人们的生活变得更好。瓦萨洛指出:“Dropcam就是 一个例子。”该设备可以让人发现入室抢劫者,帮助人们在千里之外看到宝宝第一次蹒跚学步的样子。“它提供了极好的新功能,能轻松融入这种古老的家庭安全范 式,满足人们希望时时刻刻照看家中的心理。” 产品包装注重客户感受 很多联网设备往往很难安装和使用,但这些设备正变得越来越易于使用。比如,Nest恒温器就是由曾设计过苹果iPhone手机的工程师设计的。“关键是要确保你不仅拥有正确的技术,还要用正确的包装方式。必须要让顾客一眼看到它的价值,只有这样,他们才愿意使用。” 去繁就简 “我寻找的是那种能利用传感器理解环境,能替顾客做某些事情,从而使顾客能更快更简单地做出决定,并能通过某种方式使事情得到改善的产品和服务。”瓦萨洛说。 比如,Nest恒温器就是利用智能手机来管理室内温度。它的传感器可以判断主人是否在家,然后房子的暖气或空调系统就会相应做出调整。瓦萨洛表示:“它没有提高复杂性,而是让你的生活变得更简单。” 它省钱吗? 瓦萨洛还投资了一家名叫Enlighted的创业公司。就本质而言,其产品就是一种面向商用建筑的Nest恒温器。“他们为建筑物的每一盏灯放置一 个传感器。”除了改善办公环境,这些传感器还能给企业省下一大笔钱——光是照明成本就能节省50%到70%。“对环境的影响是巨大的。” 找到合适的人才 瓦萨洛指出,企业要想涉足物联网产业,就需要聘用掌握各种专门技术的人才。她表示:“我希望创始人充满激情,善于招徕杰出人才。” 前路漫漫 在硅谷,创新浪潮通常始于硬件的大幅改进,随后将迎来漫长的软件开发期。这些联网设备的基础硬件平台目前仍处于襁褓时期。工程师们仍在努力解决一些基本的通讯标准,使智能家居产品能够更加无缝地与互联网和其它智能家居进行沟通。 瓦萨洛表示:“目前仍然是物联网的早期阶段,我们正处在‘西部拓荒’时期。” 原文发布时间为:2015年11月06日 本文作者:财富中文网 本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网。e

优秀的个人博客,低调大师

物联网创新应有的五种思维

早在凯鹏华盈投资公司担任普通合伙人期间,特拉·瓦萨洛就对居家物品与网络的联姻,也就是人们通常所说的“物联网”,产生了浓厚兴趣。她投资了好几家成功的物联网概念公司。Dropcam公司可以让人们通过Wi-Fi视频摄像头随时监控家里的孩子和宠物。Nest Labs公司则有望通过由传感器驱动的Wi-Fi联网恒温器来改变世界。 在凯鹏华盈公司工作12年后,瓦萨洛现在已转型为一名独立投资人。上文提到的两家公司已经被谷歌收购,物联网的热度有增无减。瓦萨洛称:“物联网将是下一个创新前沿。”瓦萨洛曾在IDEO公司担任产品开发员,拥有斯坦福大学商业管理学和机械工程学双硕士学位。她表示:“物联网将是继iPhone、智能手机和平板电脑生态系统之后的下一个新平台领域。” 在今年5月1日出席了由斯坦福商学院企业家研究中心赞助的一场研讨会后,瓦萨洛进一步探讨了如何在物联网领域进行创新。 改造旧有模式 瓦萨洛表示,自从互联网被发明之日起,人们就开始尝试将互联网与周身环境连接起来。如今,硬件的发展已经有了很大变化。现在的智能手机技术成本大大降低,传感器技术已经非常先进,智能设备已经可以理解它们的运作环境,并且可以采取一定的行动,使人们的生活变得更好。瓦萨洛指出:“Dropcam就是一个例子。”该设备可以让人发现入室抢劫者,帮助人们在千里之外看到宝宝第一次蹒跚学步的样子。“它提供了极好的新功能,能轻松融入这种古老的家庭安全范式,满足人们希望时时刻刻照看家中的心理。” 产品包装注重客户感受 很多联网设备往往很难安装和使用,但这些设备正变得越来越易于使用。比如,Nest恒温器就是由曾设计过苹果iPhone手机的工程师设计的。“关键是要确保你不仅拥有正确的技术,还要用正确的包装方式。必须要让顾客一眼看到它的价值,只有这样,他们才愿意使用。” 去繁就简 “我寻找的是那种能利用传感器理解环境,能替顾客做某些事情,从而使顾客能更快更简单地做出决定,并能通过某种方式使事情得到改善的产品和服务。”瓦萨洛说。 比如,Nest恒温器就是利用智能手机来管理室内温度。它的传感器可以判断主人是否在家,然后房子的暖气或空调系统就会相应做出调整。瓦萨洛表示:“它没有提高复杂性,而是让你的生活变得更简单。” 它省钱吗? 瓦萨洛还投资了一家名叫Enlighted的创业公司。就本质而言,其产品就是一种面向商用建筑的Nest恒温器。“他们为建筑物的每一盏灯放置一个传感器。”除了改善办公环境,这些传感器还能给企业省下一大笔钱——光是照明成本就能节省50%到70%。“对环境的影响是巨大的。” 找到合适的人才 瓦萨洛指出,企业要想涉足物联网产业,就需要聘用掌握各种专门技术的人才。她表示:“我希望创始人充满激情,善于招徕杰出人才。” 前路漫漫 在硅谷,创新浪潮通常始于硬件的大幅改进,随后将迎来漫长的软件开发期。这些联网设备的基础硬件平台目前仍处于襁褓时期。工程师们仍在努力解决一些基本的通讯标准,使智能家居产品能够更加无缝地与互联网和其它智能家居进行沟通。 瓦萨洛表示:“目前仍然是物联网的早期阶段,我们正处在‘西部拓荒’时期。” 作者:何妍 来源:51CTO

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册