Algorithms
206. Reverse Linked List
Reverse a singly linked list.
Example:
Input: 1->2->3->4->5->NULL
Output: 5->4->3->2->1->NULL
Solution 1—— 递归解决,重点是要理解引用的使用。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
ListNode newHead = null;
return reverse(head,newHead);
}
private ListNode reverse(ListNode head,ListNode newHead){
if(head == null){
return newHead;
}
ListNode next = head.next;
head.next = newHead;
newHead = head;
return reverse(next,newHead);
}
}
Solution 2——循环解决
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
ListNode newHead = null;
while(head != null){
ListNode next = head.next;
head.next = newHead;
newHead = head;
head = next;
}
return newHead;
}
}
Review
The Two Types of Programmers
1、世界上只有20%的程序员是领导者,开拓者。
2、80%的程序员都是软件开发公司的螺丝钉。
Tips
网络基础知识协议——数据中心
1、接入层、汇聚层和核心层三层数据中心结构
为了高可用,汇聚和接入交换机是互连模式。核心和汇聚交换机之间为了高可用,也是互连模式。怎么解决环路的问题呢?有两种方式。
一种方式:不同的可用区在不同的二层网络,需要分配不同的网段。汇聚和核心之间通过三层网络互通,二层都不在一个广播里面,不会存在二层环路的问题。三层有环是没有问题的,可以通过路由协议OSPF选择最佳的路径就可以了。
另一种方式就是大二层数据中心结构。
2、大二层数据中心结构
大二层引入了多链接透明互联协议(TRILL)。它的基本思想是,二层环有问题,三层环没有问题,那就把三层的路由能力模拟在二层实现。运行TRILL协议的交换机称为RBridge,是具有路由转发特性的网桥设备,只不过这个路由是根据MAC地址来的,不是根据IP来的。
3、垂直结构的数据中心网络和扁平结构的数据中心网络
叶脊网络结构
叶子交换机:直接连接物理服务器。L2/L3网络的分界点在叶子交换机上,叶子交换机之上是三层网络。
脊交换机:相当于核心交换机。叶脊之间通过ECMP动态选择多条路径。
传统的三层网络架构是垂直的结构,而叶脊网络架构是扁平的结构,更易于水平扩展。
Share
对装饰者模式的一点理解。