反转链表和判断回文链表

206.反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

解题思路:
递归方法:
我们只需要考虑某个结点的递归行为即可。
当结点为空时或者结点的下一个结点为空,直接返回当前结点。
当结点不为空时,reverseList(head.next)可以得到后面已经反转好的链表。我们只需要让head.next.next指向head,再让head指向空即可。

阅读更多

第一章 设计模式七大原则

1、设计模式的目的

  • 代码重用性(相同功能的代码,不用多次编写)
  • 可读性(编程规范性)
  • 可扩展性(能够方便的添加新功能)
  • 可靠性(增加新功能后,对原来的功能没有影响)
  • 高内聚、低耦合
阅读更多

JVM并发编程(上)

一、进程与线程

1.1 进程与线程

1.1.1 进程

  • 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理IO的
  • 当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。
  • 进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例程序,也有的程序只能启动一个实例进程

1.1.2 线程

  • 一个进程之内可以分为一到多个线程
  • 一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给CPU执行
  • Java中,线程作为最小调度单位,进程作为资源分配的最小单位。在windows中进程是不活动的,只是作为线程的容器。
阅读更多

JVM概述和内存结构

一、JVM概述

定义:

Java Virtual Machine - java程序的运行环境 (java二进制字节码的运行环境)

好处:

  • 一次编写,到处运行
  • 自动内存管理,垃圾回收功能
  • 数组下标越界越界检查
  • 多态 (使用虚方法调用的方式实现多态)
阅读更多

双指针解决链表问题

141.环形链表

给你一个链表的头节点 head ,判断链表中是否有环。

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。

如果链表中存在环 ,则返回 true 。 否则,返回 false 。

阅读更多
You need to set client_id and slot_id to show this AD unit. Please set it in _config.yml.