LeetCode之路
文章平均质量分 93
一个普通的程序员
一副高大的 LeetCode 天梯
仔细走好每一个阶梯
轻松与惬意,顿挫与惊喜
人生之路尚且如此
何怕 LeetCode
请大家跟我一起,走向LeetCode之路吧
曾经去过跨越一个小时的地方
无心插柳柳成荫才是美丽,有哪种美好会来自于刻意。这一生波澜壮阔或是不惊都没问题,只愿你能够拥抱那种美丽。
展开
-
LeetCode之路:108. Convert Sorted Array to Binary Search Tree
LeetCode之路:108. Convert Sorted Array to Binary Search Tree一、引言真是很久很久没有刷 LeetCode 了呢!自从掉入了 Cef3 的坑之后,又加上期间看完了 《COM技术内幕》之后,又看了点《C++语言的设计和演化》,仿佛都将刷 LeetCode 这件事甩到脑后去了。虽然看书能够很好的提升自己,但是刷题也不失为一种雅兴。不得不说,这道题还是挺有趣的原创 2017-09-08 15:52:38 · 1862 阅读 · 2 评论 -
LeetCode之路:543. Diameter of Binary Tree
LeetCode之路:543. Diameter of Binary Tree一、引言这道题有点难度,以至于我琢磨了好久好久好久(此处 while、递归懵逼循环),才最终做出来 :(不过做出来之后我的心情是这样的:哈哈,既然这道题这么有趣,先让我们看看题目吧: Given a binary tree, you need to compute原创 2017-07-27 20:04:04 · 1859 阅读 · 1 评论 -
LeetCode伴侣:从零开始 LeetCode内置数据结构库的开发
一、引言刷过 LeetCode 的同学应该都知道: LeetCode 是一个在线 OJ 系统,经常会有些涉及到链表、二叉树、数组的题目,在线做题如果出现了奇怪的问题,也不能自行打断点查看哪里出了问题;想要自己本地打开 IDE 进行编译调试吧,又发现没有对应的链表、二叉树、数组这种拿来即可使用的数据结构。因此,我开始萌生了自己写一个 LeetCode 内置数据结构库的想法。中间因为种种原因,或因原创 2017-07-20 15:14:43 · 980 阅读 · 0 评论 -
LeetCode之路:551. Student Attendance Record I
LeetCode之路:551. Student Attendance Record I一、引言这道题还是比较简单的,就当惬意陶冶情操了吧 ^_^看下题目: You are given a string representing an attendance record for a student. The record only contains the following three原创 2017-07-06 17:52:21 · 944 阅读 · 0 评论 -
LeetCode之路:541. Reverse String II
LeetCode之路:541. Reverse String II一、引言提到 Rerverse,你就要想起来 C++ 的逆置元操作:std::reverse这个函数的作用,是将指定容器的指定范围内的元素进行逆置处理。而这道题就将用到这最基本的逆置元操作。先看看题目吧:Given a string and an integer k, you need to reverse the原创 2017-07-06 17:02:01 · 808 阅读 · 0 评论 -
LeetCode之路:268. Missing Number
LeetCode之路:268. Missing Number一、引言这是一道非常简单的题目,我们做这道题的目的只有一个:尽量用更多的方法做出这道题:)先看看题目吧:Given an array containing n distinct numbers taken form 0, 1, 2, ..., n , find the one that is missing from the array.原创 2017-07-06 11:29:40 · 712 阅读 · 0 评论 -
LeetCode之路:350. Intersection of Two Arrays II
LeetCode之路:350. Intersection of Two Arrays II一、引言这道题还是挺有趣的,如何求两个数组的交集,简单的问题各种方法的思考。看看题目吧:Given two arrays, write a function to compute their intersection.Example: Given nums1 = [1, 2, 2, 1], nums2 = [2, 2]原创 2017-07-05 12:38:26 · 686 阅读 · 0 评论 -
LeetCode之路:447. Number of Boomerangs
LeetCode之路:447. Number of Boomerangs一、引言这道题还算比较有意思。先看看题目吧: Given n points in the plane that are all pairwise distinct, a “boomerang” is a tuple of points (i, j, k) such that the distance between原创 2017-07-04 13:03:30 · 709 阅读 · 0 评论 -
LeetCode之路:401. Binary Watch
LeetCode之路:401. Binary Watch一、引言这道题思路一旦走岔了,就要绕好几个杭州才能回来 T_T 比如说我。另外,这道题也是讨论区中最多逗比的一道题。哈哈,有关这道题的逗比言论,我最后给你们截图哈 ^_^这里还是言归正传,首先,还是看看题目信息: A binary watch has 4 LEDs on the top which represe原创 2017-07-03 17:31:09 · 1692 阅读 · 0 评论 -
LeetCode之路:206. Reverse Linked List
LeetCode之路:206. Reverse Linked List一、引言这道题折磨了我很久呢 T_T不得不说,这道题的递归解法着实让人有些不能理解(即使亲手写出来了,仔细钻研仍然难以理解自己的代码)。先来看看题目吧: Reverse a singly linked list. Hint:原创 2017-06-20 17:17:30 · 731 阅读 · 0 评论 -
LeetCode之路:504. Base 7
LeetCode之路:504. Base 7一、引言这道题的标题已经解释了一切: Given an integer, return its base 7 string representation. Example 1: Input: 100 Output: “202” Example 2: Input: -7 Output: “-10”原创 2017-06-19 23:56:04 · 1131 阅读 · 0 评论 -
LeetCode之路:13. Roman to Integer
LeetCode之路:13. Roman to Integer一、引言这道题挺有意思的,让我学到了罗马数字的表示规则。先来看看题吧: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999.题目信息少得令人震惊,简单翻译下吧:原创 2017-06-16 19:08:29 · 762 阅读 · 0 评论 -
LeetCode之路:217. Contains Duplicate
LeetCode之路:217. Contains Duplicate一、引言来,跟我读: duplicate [ˈdu:plɪkeɪt] n.副本;完全一样的东西 ;复制品做完这道题,一定要记住这个单词的含义。就这道题而言,其实还是非常简单的,先让我们看看这道题: Given an array of integers, find if the array contains any原创 2017-06-13 19:57:58 · 578 阅读 · 0 评论 -
LeetCode之路:409. Longest Palindrome
LeetCode之路:409. Longest Palindrome一、引言这是一道好题!为什么这么说,这道题分析出来思路或许就花了我 15 分钟;写出第一个版本的代码花了将近 10 分钟;之后优化代码更是花了我很久很久的时间,中间还间隔着吃晚饭的时间,大概能有个一个小时;最后的最后,我写出了自认为最优的代码,却还是被最高票答案所折服(做了这么久可能还是自己水平不够吧,尽管如此原创 2017-06-08 20:55:34 · 693 阅读 · 0 评论 -
LeetCode之路:242. Valid Anagram
LeetCode之路:242. Valid Anagram一、引言来,跟我一起读: anagram [‘ænə’græm] n. 回文构词法希望这个单词的含义能够深入每一个读了这篇博客的人的心里:)弄懂了这个单词的含义,这道题也就懂了 80% 了。接下来看看这道题: Given two strings s and t, write a function to原创 2017-06-07 19:39:53 · 1110 阅读 · 0 评论 -
LeetCode之路:169. Majority Element
LeetCode之路:169. Majority Element一、引言这道题做出来还是比较简单的,方法非常多,甚至于 C++ 最高票答案贴出来了 6 种方法供读者慢慢研究。不过这篇博客不对 C++ 最高票答案进行详细分析,而是对最高票答案 (Java)进行分析,因为确实是一个非常烧脑的一个解题方法。话不多说,直接看题吧:原创 2017-06-05 18:28:25 · 764 阅读 · 0 评论 -
LeetCode之路:100. Same Tree
LeetCode之路:100. Same Tree一、引言这道题其实还算比较简单,主要考察的是对于二叉树的理解,就像我之前“大胆”总结的: 使用递归能解决 80% 的二叉树问题仿佛这道题也没有超过这个范畴。先来看看这道题吧: Given two binary trees, write a function to check if they are equal or not.原创 2017-06-05 16:28:56 · 518 阅读 · 0 评论 -
LeetCode之路:237. Delete Node in a Linked List
LeetCode之路:237. Delete Node in a Linked List一、引言这道题 哈哈哈 这是我做完了之后看到最高票答案的标题,顿时觉得有些滑稽:)那么接下来就让我们看看这道 Stupid Question: Write a function to delete a node (except the tail) in a singly linked list,原创 2017-06-03 11:03:27 · 524 阅读 · 0 评论 -
LeetCode之路:387. First Unique Character in a String
LeetCode之路:387. First Unique Character in a String一、引言这道题题意非常简单,却让我思考了很久,或许难的并不是这道题,是纠结于解题思路的那种困扰吧。这里是这道题: Given a string, find the first non-repeating character in it and return it’s index. If it原创 2017-06-02 16:11:16 · 1890 阅读 · 0 评论 -
LeetCode之路:171. Excel Sheet Column Number
LeetCode之路:171. Excel Sheet Column Number一、引言这道题相对来说比较简单,但是背后涉及到的东西确实挺有意思的: 我才知道 Excel 的列的表示是用的类似于二十六进制表示法来表示的每做一题,总会有或多或少的收获,或是技术上的,或是经验上的。嗯,还是直接看题吧: Given a column tilte as appear in an Excel sheet原创 2017-05-31 16:08:13 · 688 阅读 · 0 评论 -
LeetCode之路:122. Best Time to Buy and Sell Stock II
LeetCode之路:122. Best Time to Buy and Sell Stock II一、引言这是一道非常有趣的题目! 这是一道非常有趣的题目!! 这是一道非常有趣的题目!!!重要的事情先说三遍 : )好了,接下来让我们看看这道题: Say you have an array for which the i^th element is the price of a given stock on原创 2017-05-26 19:26:01 · 1151 阅读 · 0 评论 -
LeetCode之路:404. Sum of Left Leaves
LeetCode之路:404. Sum of Left Leaves一、引言这是一道乍看比较简单,但是稍不注意做起来就会比较痛苦的题目 T_T ~~~这道题我做了很久,一开始审错了题目,提交了之后看到了 Error Case 之后发现自己理解错了,再之后做出了第一个版本的代码,但是对于代码的简洁度不够满意,然后又拼命为了减少代码行数思考更加简洁的办法,于是又写出了好原创 2017-05-25 20:44:57 · 768 阅读 · 0 评论 -
LeetCode之路:383. Ransom Note
LeetCode之路:383. Ransom Note一、引言这是一道非常“时髦”的题目,正好最近也在发生勒索病毒的事情。因此这个标题: Ransom Note 我百度翻译是“勒索信”的含义(英语水平不高,如果有其他的含义当我没说)。而就这道题目来说,说实话仅仅是挂靠了一个Ransom Note 的背景而已,实际上的模型是非常简单的:原创 2017-05-25 14:12:06 · 1220 阅读 · 0 评论 -
LeetCode之路:349. Intersection of Two Arrays
LeetCode之路:349. Intersection of Two Arrays一、引言这是一道非常简单的题目,权当睡前的一点小练习,顺便看看他人的代码学点技巧了。题目信息如下: Given two arrays, write a funtion to compute their intersection.原创 2017-05-25 00:21:09 · 1097 阅读 · 0 评论 -
LeetCode之路:453. Minimum Moves to Equal Array Elements
LeetCode之路:453. Minimum Moves to Equal Array Elements一、引言这是一道让人看上去有些困扰的题目,而本人也确实花了不少的时间,钻入了自己的思维陷阱里面,后面又出现了不少的编译问题,扰乱了自己的解题思绪。最后的最后,当看到了最高票答案之后,才发现: It’s a math question.原创 2017-05-24 20:53:32 · 1639 阅读 · 4 评论 -
LeetCode之路:500. Relative Ranks
LeetCode之路:500. Relative Ranks一、引言这道题相对来说比较简单,题目含义也比较容易弄懂。但是这道题容易理解错题意,相信这也是为什么这道题的 Acceptance (通过率)才 47% 的原因。先来看看题目吧: Given sc原创 2017-05-19 20:13:09 · 992 阅读 · 0 评论 -
LeetCode之路:455. Assign Cookies
LeetCode之路:455. Assign Cookies一、引言这是一道非常非常有趣的题目,有趣到我睡前看到了这道题,拼着明天上班没精神的后果都要撑着把这篇博客写完。那么这道题究竟哪里有趣了呢?同样是一道题意简单、做出来也简单,甚至于最高票答案的思路都是跟我们的思路一样一样的题目;看似轻松平常,但是最高票答案却用了一般人想不到的方式来完成这个问题,这就让人有些感叹不已了。原创 2017-05-19 01:22:43 · 798 阅读 · 0 评论 -
LeetCode之路:530. Minimum Absolute Difference in BST
LeetCode之路:530. Minimum Absolute Difference in BST一、引言最近工作较忙,加上更换工作主力电脑(嘿嘿终于用上了 ThinkPad),稍微耽误了 LeetCode 的刷题进度,不过没关系,只要人在、题在,进度就一直会在。这是一道有关二叉搜索树的题目,我们先来看看题目,再来解释相关概念:原创 2017-05-18 15:59:44 · 1290 阅读 · 0 评论 -
LeetCode之路:563. Binary Tree Tilt
LeetCode之路:563. Binary Tree Tilt一、引言做这道题一定不能忘的一点: tilt 是倾斜度的意思(T_T鄙人英语战五渣,LeetCode 读题靠百度翻译,有本事来咬我啊)好了,进入正题,这是一道非常有趣的题目,让我们来看看题目信息: Given a binary tree, return the tilt of the whole tree.原创 2017-05-12 12:34:09 · 1221 阅读 · 0 评论 -
LeetCode:492. Construct the Rectangle
LeetCode:492. Construct the Rectangle一、引言这是一道比较简单的题目,尽管题目信息比较多,这里附上题目信息: For a web developer, it is very important to know how to design a web page’s size. So, given a specific rectangular web page’原创 2017-05-11 22:54:35 · 728 阅读 · 0 评论 -
LeetCode之路:283. Move Zeroes
LeetCode之路:283. Move Zeroes一、引言一看到这道题,我就想起了曾经在西安一家公司面试的时候,一位面试官问我的一道题: 在一个数组中,零散的分布了一些正整数和 0,你可以写个方法把所有的 0 都移动到数组的最后边吗?题目要求很简单,完成这道题的思路也有很多,当时脑海里冒出的第一个念头就是: 排序嘿嘿,就是这么“懒”(使用std::sort方法就可以了),但是面试官不满意,让原创 2017-05-11 18:15:47 · 898 阅读 · 3 评论 -
LeetCode之路:258. Add Digits
LeetCode之路:258. Add Digits一、引言这是一道比较难的题,之所以下这个定义,是因为要做出来这道题的正确答案,需要一点点数学知识。当然,能看到这篇博客的人,大部分都是程序员,那么作为程序员,我们自然有自己的方法来实现它,这样看来,这道题其实也不算太难。直接上题目信息吧: Given a non-negative integer num, repeatedly add all its原创 2017-05-08 23:57:59 · 738 阅读 · 0 评论 -
LeetCode之路:226. Invert Binary Tree
LeetCode之路:226. Invert Binary Tree一、引言这道题的 Trivia 栏目下的信息还是挺有意思的: Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.这句话的原创 2017-05-02 18:28:56 · 569 阅读 · 0 评论 -
(翻译整理)如何简单、高效地使用位操作解决问题
一、引言这是我翻译自 A summary: how to use bit manipulation to solve problems ealily and efficiently 的译文。这篇笔记整理是 LeetCode 第 371 题的讨论区最高票答案,其中整理了有关如何简单、高效地使用位操作来解决问题的方法。其中文章开篇,先将基础的常见的位操作使用方法梳理了一遍,然后晓之以具体事例来进行讲解,翻译 2017-04-28 17:45:13 · 1494 阅读 · 0 评论 -
LeetCode之路:521. Longest Uncommom Subsequence I
LeetCode之路:521. Longest Uncommom Subsequence I一、引言这是一道非常具有模糊性的题目。在做完这道题之后,我翻看了下这道题的讨论区,发现都是一片吐槽的声音,比如下面这位:哈哈哈~~~当看到了这位仁兄这样的言论后,稍微有点同样的心理路程的我也难免露出了会心的一笑。究竟什么样的题目会有如此魔力,来看题目介绍吧:原创 2017-04-27 18:57:40 · 944 阅读 · 0 评论 -
LeetCode之路:461. Hamming Distance
LeetCode之路:461. Hamming Distance一、引言关于Hamming Distance这道题,想要了解这道题的题目信息的可以点击这里Hamming Distance。这里主要对两种方法进行探讨,其一是我写的方法,另外一个是我在 Discuss 区域看到的非常奇妙的方法。二、我的方法看到了这道题,我首先想到的是,需不需要将两个 int 类型的参数转换为二进制。答案当然是不需要,为什么呢?原创 2017-04-10 10:41:47 · 432 阅读 · 0 评论 -
LeetCode之路:557. Reverse Words in a String III
LeetCode之路:557. Reverse Words in a String III一、引言想要看题目的同学可以点击这里Reverse Words in a String III,这里不再赘述。二、我的方法看到这个题目,要反转字符串中的单词,那么有两个我要考虑的东西:怎么抽离出每个单词?怎么反转每个单词中的字符?对于这两个问题,我分别作出了如下回答:使用 std::string 自带的 find 函数原创 2017-04-10 12:59:19 · 991 阅读 · 0 评论 -
LeetCode之路:476. Nubmer Complement
LeetCode之路:476. Nubmer Complement一、引言这道题比较简单,就是求最大32位的整型数的补数。想要看 LeetCode 上这道题详细描述的可以点击这里Number Complement。二、我的方法看到了这道题,我陷入了深深的沉思。 首先,位处理的方法很简单,就是不停地 /= 2 和 % 2,这里就不做太多的赘述了。 其次,如果按照上述的方法来做呢,是不是太复杂了,需要一个循环来遍历。原创 2017-04-10 14:30:57 · 461 阅读 · 0 评论 -
LeetCode之路:500. Keyboard Row
LeetCode之路:500. Keyboard Row一、引言这道题的题目信息点击这里获取Keyboard Row。这道题的大概意思就是在给你一堆单词,然后你要在这堆单词中间,检测每个单词是否可以使用键盘上面的三行键盘的一行全部打印出来。二、我的方法看到了这道题,首先映入我脑海的就是 std::set 。std::set 最常用的用途就是用来查找指定的内容是否在内容池里存在了吧。我的思路如下:原创 2017-04-10 17:21:27 · 359 阅读 · 0 评论 -
LeetCode之路:412. Fizz Buzz
LeetCode之路:412. Fizz Buzz一、引言这道题的详细信息请看这里Fizz Buzz。二、解决方法其实这道题真的非常简单,要的就是稍微细心点,明确遍历变量跟实际的数字的关系,然后再了解下 int 如何转 std::string 类型就可以了。class Solution {原创 2017-04-10 17:40:56 · 18312 阅读 · 0 评论