//v3.bootcss.com/components/ 组件:由多个html元素组成的一个独立的小功能 例如:下拉菜单组件 由 div + button + ul + li元素组成 例如:进度条组件...由 div + span元素组成 bootstrap栅格系统:https://v3.bootcss.com/css/#grid boostrap的核心技术(实现响应式布局的核心技术) 将屏幕以表格的形式划分为不同的区域...(相当于html页面的子盒子模型,相当于table中的tr) 4.png 3.栅格样式的核心原理 a.版心容器(container是响应式版心,container-fluid是流式版心) 他们两者唯一的区别是...,尺寸比例):bootstrap将水平方向分为12份,每一份表示row宽度的 1/12 ==col列需要写在行row标签中,每一行的栅格整体宽度占据12份,大于12份就会换行== 示例:(详细效果请参考下图与真实代码演示...container bootstrap中有两种版心容器可供使用者选择 container:响应式版心容器 默认样式: 没有高度、边框、颜色 左右15px的padding 宽度是响应式 屏幕宽度 < 768
监测用户的滚动行为是否到达了目标位置来实现一些交互逻辑(比如视频元素滚动到隐藏位置时暂停播放)。...但此时,对比上面这个粗暴的方案,我们的方案是:这 10个新的数据元素,我们用原来已有的 DOM 元素去渲染,替换掉已经离开视窗、不可见的数据元素;而本该由更多 DOM 元素进一步撑开容器高度的部分,我们用...获取滚动距离,然后: 设置父元素的 translate 来实现整体内容的上移(下移); 再基于这个滚动距离进行相应计算,得知相应子元素已经被滚动到视窗外,并且判断是否应该将这些离开视窗的子元素移动到末尾...这就像是一个循环队列一样,随着滚动的进行,顶部元素先出视窗,但又将移动到末尾,从而实现无限下拉。...思路 2、滚动到目标位置,阻塞容器 padding 的设置(即无限下拉的发生)直至数据请求完毕,用 loading gif 提示用户加载状态,但这个方案相对复杂,你需要全面考虑用户难以预测的滚动行为来设置容器的
提示:可将圆盘临时置于 B 杆,也可将从 A 杆移出的圆盘重新移回 A 杆,但都必须遵循上述两条规则。 问:如何移?最少要移动多少次? ---- 题目分析 梵塔问题只能用递归算法来解决。...我们可以考虑移动的步骤: 将A针上的N-1个圆盘借助C针移动到B针上。 将A底部的圆盘移到C针上。 将B针上的N-1个圆盘借助A针移动到C针上。...问题1的解决步骤如下: 将A针上的N-1-1个圆盘借助B针移动到C针上。 将A底部的倒数第二个圆盘移到C针上。 将C针上的N-1-1个圆盘借助A针移动到B针上。...问题2的解决步骤如下: 将B针上的N-1-1个圆盘借助C针移动到A针上。 将B底部的倒数第二个圆盘移到C针上。 将A针上的N-1-1个圆盘借助B针移动到C针上。...按照之前分析的步骤,先将A针上的N-1个圆盘借助C针移动到B针上,然后将A底部的圆盘移到C针上,最后将B针上的N-1个圆盘借助A针移动到C针上。
img 向一个父节点为 2- 节点的 3- 节点中插入新节点 操作步骤:先构造一个临时的 4- 节点并将其分解,分解时将中键移动到父节点中(中键移动后,其父节点中的位置由键的大小确定) 图解: ?...img 向一个父节点为3-节点的3-节点中插入新节点 操作步骤:插入节点后一直向上分解构造的临时4-节点并将中键移动到更高层双亲节点,直到遇到一个-2节点并将其替换为一个不需要继续分解的3-节点,或是到达树根...img 分解根节点 操作步骤:如果从插入节点到根节点的路径上全是3-节点(包含根节点在内),根节点将最终被替换为一个临时的4-节点,将临时的4-节点分解为3个2-节点,分解后树高会增加1。...主要分为四种情形: 删除节点为2-节点,父节点为2-节点,兄弟节点为3-节点 操作步骤:当前待删除节点的父节点是2-节点、兄弟节点是3-节点,将父节点移动到当前待删除节点位置,再将兄弟节点中最接近当前位置的...img 2-3树为满二叉树,删除叶子节点 操作步骤:若2-3树是一颗满二叉树,将2-3树层树减少,并将当前删除节点的兄弟节点合并到父节点中,同时将父节点的所有兄弟节点合并到父节点的父节点中,如果生成了4
队列是一种特殊的线性表,是运算受到限制的一种线性表,只允许在表的 一端进行插入,而在另一端进行删除元素的线性表。队尾(rear)是允许插入的一端。队头(front)是 允许删除的一端。...数组: 数组是在内存中开辟一段连续的空间, 指定索引位置增加元素:需要创建一个新数组,将指定新元素存储在指定索引位置,再把原 数组元素根据索引,复制到新数组对应索引的位置。...---------------- 集合和数组既然都是容器,它们有啥区别呢?...public void addFirst(E e) :将指定元素插入此列表的开头 。 public void addLast(E e) :将指定元素添加到此列表的结尾 。...public E next() :返回迭代的下一个元素 同时指针下移。 public E previous() :返回迭代的上一个元素 同时指针上移。
今天分享的题目来源于 LeetCode 上第 206 号问题:反转链表。这道题目经常出现在算法面试中的笔试环节。 题目描述 反转一个单链表。...示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 题目解析 在原链表之前建立一个空的节点 pre,然后从头节点 cur 开始,先保存 cur->next...为 next ,将 cur 的 next 节点变为 pre,pre 移到 cur,cur 移动到 next。...相关题目推荐 LeetCode 26:删除排序数组中的重复项 LeetCode 203:移除链表元素 END
stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。...queue的介绍 queue的文档介绍 队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。...队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列。...、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。...,将默认使用 std::vector 作为容器类型。
循环移位是环形的,即被移出来的位将返回到另一端空出来的位(见图4-18)。 带进位的右、左循环移位指令各位的数据与进位位一起(16位指令时一共17位)向右(或向左)循环移动n位。...TO用来产生周期为1s的移位脉冲序列,下面是实现上述要求的程序: (2) 10位彩灯循环左移 要求用S7-200的oo.o – oi.1来控制10位彩灯的循环左移,即从Q1.1移出的位要移人oo.o。...(3)循环投切 假设用S7-200的QO.O – Q0.7来控制自动无功补偿装置投切电容器的8个交流接触器。为了使各交流接触器均衡使用,一般采用循环投切的工作方式,即先投入的电容器被先切除。...如果需要切除电容器,将移位前后两个字节的值相“与”,由表4-3可知,“与”运算后仅Q0.3和Q0.4为l,Q0.2被切除。...如果需要投入电容器,将移位前后两个字节的值相“或”,由表4-3可知,“或”运算后Q0.2-oo.s为1,所以将投入Q0.5。
Bootstrap JS插件使用 > 对于Bootstrap的JS插件,我们只需要将文档实例中的代码粘到我们自己的代码中 > 然后作出相应的样式调整 Bootstrap中轮播图插件叫作Carousel...bootstrap.js会自动为当前元素添加图片轮播的特效 5 --> 6 ...1、由于轮播图片超宽造成的影响 - 美工为了在不同屏幕下更好地展示将图片两边做的非常宽,但是我们大多数情况的页面宽度都无法满足这样的图片宽度 - 而且Bootstrap的样式中默认将图片的max-width...: center center; (2)使img元素绝对定位,left:50%,margin-left: -width/2 2、background使用 - 将容器的高度固定(410px... + 移动端应该使用更小(体积)的图片 (2)实现方式 + 将元素中直接设置的图片背景删除,换成两个data-属性(如:data-img-sm="小图路径",data-img-lg=
1、队列的定义和特点 和上一篇的栈相反,队列(queue)是一种先进先出(First In First Out, FIFO)的线性表。 它只允许在表的一端进行插入,而在另一端删除元素。...这和日常生活中的排队是一致的,最早进入队列的元素最早离开。 ? 在队列中,允许插入的一端称为队尾(rear), 允许 删除的一端则称为队头(front)。出队列和入队列示意图如下: ?...因为如果队首指向0,那么出队的时候需要将数组前移,时间复杂度为O(n)。使用了队头和队尾标记之后,出队时队头往后移动一位,这样避免了元素的移动。...System.arraycopy(data,0,newData,0,size); data=newData; }else{ //假队满:前移元素...入队是将队尾指向插入的新元素,出队是将队头指向队头的下一个元素。
现在我来一一解释一下为什么认为CSS Grid优于Bootstrap的三个理由: 元素会更简单 用CSS Grid替代Bootstrap能让HTML代码更干净。...,标签会变得更糟糕: CSS Grid 现在我们来看看CSS Grid的做法: 我可以在这里使用语义元素,但我选择坚持使用div以便和Bootstrap比较 我们可以明显发现,这里的元素比Bootstrap...每一行里难看的类和不需要的div标签都被移除了。现在它就是一个网格和其他内容的容器。 与Bootstrap不同的是,随着布局复杂度的增加,这种元素的复杂度将不会增加太多。...CSS Grid让HTML展现出应该展现的东西——内容元素。而视觉效果是属于CSS的。 Bootstrap 如果我们想在Bootstrap中做同样的事情,就必须改写HTML。...换句话说,因为已经将内容与视觉效果分开了,所以所有的访问者都看到内容,但是支持CSS Grid的浏览器会通过更好的布局来提升用户的体验。
2.如果前面的元素大于后面的元素,交换两个元素的位置。 3.反之则不交换。 4.循环后移,每次将最大的元素移动到最后一个。...2.依次遍历后面的元素,如果发现比当前最大值大,则将最大值换为此元素,位置改为此元素位置。 3.直到遍历结束,将最大值的元素与最右边元素交换。 4.重复循环,直到排序完成。...2.将临时元素与数组后面的元素进行比较,如果后面的元素小于临时元素,后面的元素前移。 3.如果后面的元素大于临时元素,或者已经移动到数组末尾,则将临时元素插入当前的空隙中。...while(j<=array.length-1){ if (array[j] < ls) { //元素前移,因为临时元素已经提出来了,可以直接前移而不是交换...选择排序与插入排序的运用因情况而定,如果元素数组本身有很多处于正确位置的元素,那么插入排序使用效率相对优秀,反之则用选择排序。
然后将辅助栈的元素依次弹出并存入数组后返回。 /** * Definition for singly-linked list....(stack.length) { result.push(stack.pop()) // 依次将辅助栈内的元素弹出并存入结果数组中 } return result; //...总结 暴力法和辅助栈法的区别是一个使用数组的 API 进行元素倒置,一个使用辅助栈进行元素倒置。面试中应该尽量使用辅助栈的思路进行题解,暴力法不能体现出栈的特点。 「剑指 Offer 24....示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制: 0 <= 节点个数 <= 5000 思路: 翻转链表是一个很经典的算法题,首先考虑使用遍历链表...指针存储,方便cur指针的前移 cur.next = pre; // 将当前节点的next指针指向前面的节点 pre = cur; // 将前面的节点后移一位到当前节点
示例: 输入:1->3->5->7->9, 0->2->4->6->8 输出:0->1->2->3->4->5->6->7->8->9 思路 抓住需求的关键信息——"两个升序链表" 说明两个链表都是有序的...,也就是将两个有序的链表重新合并成一个整体有序的链表。...思路就是挨个比较两个链表中的元素,谁更小就先取谁,然后记得将指针移到下一个节点,直到遍历完两个链表。...这里有一个问题:如果直接使用result,第一个元素指向l1.Val后,需要移动到下一个节点来保存下一个节点值,那这个result指针就是一直在变,直到两个链表遍历完成。...将节点赋值给cur指针,同时cur指针移动到下一个节点 4、重复以上,遍历完两个链表 ? 此时cur指针指向节点9。l1和l2都指向尾结点。
适用场景:优先保障最新数据可用 # 实现 # 每次插入链表,插入链表一端(头部),当超过长度时,将另一端(尾部)清除掉; #LinkedHashMap实现 # 构造的 accessOrder 为false...,表示每次访问元素时,不将被访问的元素移动到tail位置 public class FifoCache extends LinkedHashMap { // 容量...,将另一端(尾部)清除掉; #当访问元素时,需要将被访问的元素移动到头部,保证最近访问的元素始终处在不被淘汰的位置,而最久未被使用的元素则会被淘汰; # LinkedHashMap实现 # 构造的 accessOrder...为true,表示每次访问元素时,将被访问的元素移动到tail位置 public class LRUCache extends LinkedHashMap { private...,原来不存在才涉及到 移除元素,否则修改原容器的元素 Node deadNode = removeNode(); cache.remove
栈与队列的相互转化 1 栈与队列 1.1 栈 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。...栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。 出栈:栈的删除操作叫做出栈。出数据也在栈顶。...1.2 队列 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 的原则 入队列:进行插入操作的一端称为队尾 出队列...栈像一个容器来装物品,队列像排队买饭。这两个事情看起来毫不相干,那么如何实现栈与队列的相互转换呢。下面我们来看两道OJ题,来进行具体解决。...n-1个元素移动到空队列,这里的移动不是将节点的移动,而是将值赋给空队列。
stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。...2.1 queue的介绍 队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。...队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列。...容器适配器 3.1 概念 配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口 3.2 STL标准库中...但是,deque有一个致命缺陷:不适合遍历,因为在遍历时,deque的迭代器要频繁的去检测其是否移动到某段小空间的边界,导致效率低下,而序列式场景中,可能需要经常遍历,因此在实际中,需要线性结构时,大多数情况下优先考虑
图片3.3 float + overflow左列同样使用 float,右侧不用 margin-left,而用 overflow: hidden; 开启 BFC 模式,将元素内部环境与外界完全隔离。...4.2 圣杯布局:添加父节点+开启定位处理覆盖【step1】全部浮动将 left、center、right 全部浮动,并使用 margin 将 parent 左右预留出左右列的宽度,效果如下图所示图片<...margin-left 为 -100%,实现 left 从当前行移动到上一行,如下图所示:#left { /* 从当前行上移一行 */ margin-left: -100%;}图片此时只能借助 position...等分布局(栅格布局)等分布局指一行被分成若干宽度相等的列。比如 bootstrap 会将一行分为 12 列。...针对第一列左侧多余的空白间距,可以在容器 parent 上设置 margin-left。
移动零 题目 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。...观察 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 整个过程就是0元素不断后移,非零元素不断前移的过程,所以算法每步操作的目标便是:逐渐达成这个分布规律。 怎样优化操作?...假设两个指针slow和fast分别指向连续零区间的第一个0,最后一个0的后一个位置,如下图所示: ? 那么,fast-slow 正是索引从0~fast区间范围内0元素的个数。...fast指向下一个元素: ? 若打问号元素为0,根据每步操作的目标是非零元素前移,零元素后移。所以迭代到此处时它已经为0元素,所以至少肯定不用前移,那么就保持原地不动。...若打问号的元素取值非0,根据每步操作的目标是非零元素前移,零元素后移。因为slow~fast这块都为0,所以为了目标,非零元素要和第一个0交换,这样不就实现非零元素前移,零元素后移的目标了吗 ?
领取专属 10元无门槛券
手把手带您无忧上云