leetcode481. Magical String

2019-10-08
阅读 2 分钟
1.5k
这题是描述了一个魔法字符串,该字符串完全由数字1和2构成。这个字符串的魔法点在于,如果将该该字符串连续的数字数量进行统计并且构成一个新的字符串,会发现新的字符串与原来的字符串完全相同。比如1 22 11 2 1 22 1 22 11 2 11 22字符串,经过统计后发现有1个1,2个2,2个1,1个2,1个1,2个2,1个1,2个2,2个1,1个...

leetcode 328. Odd Even Linked List

2018-03-17
阅读 2 分钟
1.9k
将一个链表中的节点按照奇数位上的节点在前,偶数位上的节点在后重新排序。这里需要注意的是节点之间的相对顺序不可以改变。即1->2->3->4不可以变为1->3->4->2,只能是1->3->2->4。

leetcode141-142. Linked List Cycle I & II

2017-08-23
阅读 2 分钟
1.7k
还有一种方法是指将链表的结果给拆掉,一旦遍历过当前节点,就将当前节点的下一个指针指向dummy节点。如果有环,就会重复遇到这个指向dummy的节点。则该链表有环,且该节点就是环的起始节点。但是这个方法会毁坏原来链表的数据结构。

leetcode 151. Reverse Words in a String

2017-08-21
阅读 2 分钟
2.2k
关于正则表达式的详细信息,请参考我的这篇博客在这里,我们只需要将句子中的单词通过split的正则表达式读取出来即可。这里用到的正则表达式为\s+,也就是遇到一个或多个空白时断句。

leetcode109. Convert Sorted List to Binary Search Tree

2017-08-07
阅读 1 分钟
1.7k
在这里需要注意的是,因为提供的数据结构为链表,所以我们必须顺序遍历才能知道该链表的长度以及该链表的中间位置。在这里,我们可以采用递归的形式,而且在递归中我们通过双指针的方式找到其中的中间节点。并依次递归左子节点和右子节点。

leetcode86. Partition List

2017-07-09
阅读 3 分钟
1.4k
该思路需要我们记录3个节点。当前节点的前一个节点currentPrev,插入位置的前一个节点prev,以及记录初始位置的节点start。当发现一个需要交换的节点时,先获得这个节点,然后将currentPrev指向节点的后一个节点。之后将当前的节点插入到prev之后。代码如下:

leetcode75. Sort Colors

2017-07-04
阅读 2 分钟
1.6k
如何能在一次遍历的过程中实现三个数字的排序呢~这就需要使用到双指针。我们要确保左指针之前的数值全部是0,右指针之后的数值全部是2。这样他就可以确保左右指针之间的数字为1,从而实现0,1,2的排序。代码如下:

leetcode42 Trapping Rain Water

2017-06-15
阅读 6 分钟
3.5k
假设这些是一些间隔的木板,问最多能够装多少水。也就是一个区域性的短板问题。其实一个区间能够乘的最大水量,取决于它的左右最近且最高的木板的长度。当然除了通过多个区间的和来计算总体的盛水量,还可以通过横向的划分来计算盛水量。这些将在接下来中的代码一一分析。官方也提供了一些答案,这里将给出相应的java实...

leetcode61 Rotate List

2017-06-15
阅读 3 分钟
1.7k
其实这题的描述有些不妥当,确切的说是将最右侧的节点依次移到最左侧作为头结点,一直移动到右侧第k个节点后结束。还是以1->2->3->4->5->NULL为例k=1 结果为:5->1->2->3->4->NULLk=2 结果为:4->5->1->2->3->NULLk=3 结果为:3->4->5->1->2->NULLk=4 结果...