ziheng's Blog

zihengCat is here!

LeetCode - 387. 寻找字符串首个唯一字符

LeetCode - 387. First Unique Character in a String

前言本文记录 LeetCode - 387. 字符串首个唯一字符(First Unique Character in a String) 问题。 问题描述给出一枚字符串,请寻找字符串中第一个不重复字符,返回该字符在字符串中的索引下标。如果字符不存在,返回-1。 输入: "leetcode" 输出: 0 注:示例 1 输入: "loveleetcode&qu......

LeetCode - 430. 多层双向链表展开

LeetCode - 430. Flatten a Multilevel Doubly Linked List

前言本文记录 LeetCode - 430. 多层双向链表展开(Flatten a Multilevel Doubly Linked List) 问题。 问题描述给出一个多层双向链表:除前驱后继节点指针外,额外还有一枚子节点指针child,该指针可能指向另一个双向链表,子链表节点也可能有一个或多个子链表。 请你将多层双向链表展平为单层双向链表,输入输出均为链表首层头节点。 Input: 1......

LeetCode - 728. 自整除数

LeetCode - 728. Self Dividing Numbers

前言本文记录 LeetCode - 728. 自整除数(Self Dividing Numbers) 问题。 问题描述所谓自整除数(Self Dividing Numbers),是指对自身每一位都能整除的数。 例如,128 就是一个自整除数,因为:128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。 当然,一个自整除数不允许含有0位(除数不能为0)。 给出整数序列的......

LeetCode - 189. 旋转数组

LeetCode - 189. Rotate Array

前言本文记录 LeetCode - 189. 旋转数组(Rotate Array) 问题。 问题描述给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 为非负数。 Input: [1,2,3,4,5,6,7] and k = 3 Output: [5,6,7,1,2,3,4] Explanation: rotate 1 steps to the right: [7,1,2,3,4,5......

LeetCode - 146. 设计 LRU 缓存

LeetCode - 146. LRU Cache

前言本文记录 LeetCode - 146. 设计 LRU 缓存(LRU Cache) 问题。 问题描述请你设计并实现“最近最少使用”(Least Recently Used, LRU)缓存,支持如下操作:get()与put()。 get(key):根据键获取值。如果该键位于缓存中,返回该键对应的值,否则返回-1。 put(key, value):设置缓存键值对。如果该键已存在缓存中,更......

整型数转换字符串 - Java 实现

Integer to String - Java Implementation

前言今天看到一个面试问题:一个整型数如何转换为字符串,请手动实现一下。 整型数转换字符串整数转字符串正是C语言标准库itoa()函数,要求不使用语言标准库,手写实现该函数。思路非常简单:整数对其基数(Base)取余得到余数(Remainder),余数加上'0'(ASCII 码:48)转为字符型后拼接字符串,直至除尽。 public class IntegerToString ......

Java 内存管理 - Minor GC,Major GC,Full GC

Java Memory Management - Minor GC, Major GC, Full GC

前言对于 Java 程序员而言,了解 JVM 内存管理机制是非常重要的。今天,我们来了解 Minor GC,Major GC,Full GC 之间的区别与联系。 JVM 堆(Heap)内存模型如图所示,JVM 将堆内存被划分为两块不同的部分:新生代(Young Generation)与老年代(Old Generation)。 图:JVM 堆(Heap)内存模型 - 示意图 新生代(Yo......

Java 高级教程系列 - 死锁示例及解决

Java Tutorial for Language Adavanced - Deadlock Example and Solution

前言本文讲解 Java 死锁的基本概念,并给出一个 Java 死锁的简单示例,也讲解如何发现死锁,解决死锁问题。 Java 死锁(Deadlock)在 Java 中,死锁(Deadlock)情况是指:两个或两个以上的线程持有不同系统资源的锁,线程彼此都等待获取对方的锁来完成自己的任务,但是没有让出自己持有的锁,线程就会无休止等待下去。线程竞争的资源可以是:锁、网络连接、通知事件,磁盘、带宽,......

Java 7 新特性 - Switch Case 使用字符串

Java 7 - String in Switch Case Statement

前言switch语句在 Java 诞生之初便已存在,但只支持int与enum类型。在 Java 7 之后,switch语句也可以支持String字符串类,方便了开发者。 Java switch 使用字符串我们通过一个实例,了解如何在switch语句中使用String字符串。 public class StringSupportedInSwitchStatement { pu......

使用栈实现队列

Implement a Queue Using Two Stacks

栈与队列栈(Stack)与队列(Queue)都是我们熟悉的线性表数据结构,栈的性质:后进先出(LIFO),队列的性质:先进先出(FIFO),性质截然不同的两种数据结构。思考这样一个问题,能否使用栈结构实现一个队列呢? 使用栈实现队列实际上,使用栈结构实现队列的思路非常简单:维护两个栈,元素入队时,将元素压入一个栈中;元素出队时,将存放入队元素的栈元素全部弹出至另一个栈中,对另一个栈出栈,使用......