自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 IIXamLNyJJ

IIXamLNyJJ

2019-11-13 21:12:30 236

原创 链表中环的入口节点

题目描述 一个链表中包含环,请找出该链表的环的入口结点。要求不能使用额外的空间。 解析:快慢指针。快慢指针相遇时,快指针走了2k长度,慢指针走了k长度。多的k长度就是环的长度。假设相遇点距离环入口为m,则环入口距离起始点为k-m,恰巧相遇点的指针再走k-m节点就为环入口。所以同时继续出发,再次相遇点就是环的入口。 public ListNode EntryNodeOfLoop(ListNode ...

2019-11-12 22:59:39 83

原创 合并两个有序链表

递归 public ListNode Merge(ListNode list1, ListNode list2) { if (list1 == null) return list2; if (list2 == null) return list1; if (list1.val <= list2.val) { list1.next = Merge(list...

2019-11-12 16:26:12 75

原创 对称的二叉树

解析: boolean isSymmetrical(TreeNode pRoot) { if (pRoot == null) return true; return isSymmetrical(pRoot.left, pRoot.right); } boolean isSymmetrical(TreeNode t1, TreeNode t2) { if...

2019-11-12 16:02:55 77

原创 镜像二叉树

解析: public void Mirror(TreeNode root) { if (root == null) return; swap(root); Mirror(root.left); Mirror(root.right); } private void swap(TreeNode root) { TreeNode t = root.l...

2019-11-12 16:00:53 79

原创 两个栈实现队列,两个队列实现栈

题目描述 用两个栈来实现一个队列,完成队列的 Push 和 Pop 操作。 解析: Stack<Integer> in = new Stack<Integer>(); Stack<Integer> out = new Stack<Integer>(); public void push(int node) { in.pus...

2019-11-12 15:50:34 55

原创 在O(1)时间内删除节点

解析 1 如果不是尾节点,将要删除节点后继节点的值赋予当前节点,再将当前节点后继指向后继的后继,达到目的 2 如果是尾节点,则遍历至前一个节点,直接将前一个节点的后继指向null 时间复杂度分析:如果进行N次操作,N-1种可能性不会死尾节点,则操作次数为N-1,一种可能性为尾节点,操作次数为N。 所以总操作次数为2N-1.平均复杂度为2N-1/N = O(1) 代码: public ListNo...

2019-11-12 15:37:26 86

原创 层次打印二叉树

1从上往下打印二叉树 题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 例如,以下二叉树层次遍历的结果为:1,2,3,4,5,6,7 解析: public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { Queue<TreeNode> queue = new LinkedList<...

2019-11-12 15:26:19 434

翻译 应用层

域名系统 DNS 是一个分布式数据库,提供了主机名和 IP 地址之间相互转换的服务。这里的分布式数据库是指,每个站点只保留它自己的那部分数据。 域名具有层次结构,从上到下依次为:根域名、顶级域名、二级域名。 DNS 可以使用 UDP 或者 TCP 进行传输,使用的端口号都为 53。大多数情况下 DNS 使用 UDP 进行传输,这就要求域名解析器和域名服务器都必须自己处理超时和重传从而保证可靠性。在...

2019-11-10 19:58:46 166

翻译 传输层

网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信信道。 UDP 和 TCP 的特点 用户数据报协议 UDP(User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并...

2019-11-10 19:49:42 101

原创 反转链表

反转一个单链表 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 解析(1):递归 class Solution { public ListNode reverseList(ListNode head) { if(head.next == null){ ...

2019-11-10 18:16:42 75

原创 数据库之事务

事务:指的一组操作,里面有许多单一的逻辑。只要有一个逻辑没有执行成功,就算失败。所有的数据都回归到最初的状态(rollback) 为什么要有事务 为了确保逻辑的成功 开启事务 start transaction 提交或回滚事务 commit:提交事务,数据会写到磁盘上的数据库中 rollback:数据回滚,回到最初始状态 事务的特性(ACID) 原子性 指的是 事...

2019-11-10 18:01:50 72

原创 排序算法之归并快排

排序算法 归并排序 思想: 经过多次递归,变为一个个数字。再经多次merge就可以变为有序。merge 方法中只有一个 for 循环,直接就可以得出每次合并的时间复杂度为 O(n) ,而分解数组每次对半切割,属于对数时间 O(log n) ,合起来等于 O(log2n) ,也就是说,总的时间复杂度为 O(nlogn) 。 public static void sort(int[] arr) { ...

2019-11-10 18:00:01 81

原创 双指针到滑动窗口

双指针到滑动窗口算法 1、判定链表中是否含有环 解析:定义两个指针,一快一慢。如果有环,则会相遇。 boolean hasCycle(ListNode head){ ListNode fast,slow; fast=slow=head; while(fast != null&&fast.next!=null){ fast = fast.next.next;//快...

2019-11-10 17:58:51 765

原创 计算机网络(1)

tcp 怎么保证数据包有序 主机每次发送数据时,TCP就给每个数据包分配一个序列号并且在一个特定的时间内等待接收主机对分配的这个序列号进行确认, 如果发送主机在一个特定时间内没有收到接收主机的确认,则发送主机会重传此数据包。 接收主机利用序列号对接收的数据进行确认,以便检测对方发送的数据是否有丢失或者乱序等, 接收主机一旦收到已经顺序化的数据,它就将这些数据按正确的顺序重组成数据流并传递到高层进行...

2019-11-10 17:57:06 118 1

原创 回文数相关

判定是否是回文数 例子: 输入: 121 输出: true 输入: -121 输出: false bool isPalindrome(int x) { if(x < 0 || (x % 10 == 0 && x != 0)){ return false; } int r = 0; ...

2019-11-10 17:54:57 68

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除