leetcode经典题目解析
文章平均质量分 85
业余时间刷一刷leetcode的经验,好于目前所有的leetcode题解。
yutianzuijin
目前从事语音识别相关的工作。
展开
-
Leetcode 之 Count Complete Tree Nodes
问题来源:Count Complete Tree Nodes问题描述:给定一棵完全二叉树,求树的节点个数。完全二叉树就是把满二叉树右侧的叶子节点删掉几个构成的二叉树。该问题一看就不能用传统的递归遍历或者层次遍历来统计节点个数,因为这没有利用到完全二叉树的性质,估计提交会超时。所以我们需要另辟蹊径,想想如何利用完全二叉树的性质来统计节点个数。解法一面对树的问题,我们首先想到的思路就是采用递归。针对该问题也可以采用递归实现(当然不是遍历所有节点的递归),不过在递归的时候需要我们发现完全二叉树的一个性质:原创 2021-01-28 23:13:25 · 488 阅读 · 0 评论 -
leetcode之Long Pressed Name
问题来源:Long Pressed Name问题描述:判断字符串name是否是由长按字符串typed得来。长按含义是name的每个字符可能会重复1到多次。看到该题目第一眼还以为是Is Subsequence,判断短串是否是长串的子序列,随即用该思路实现了一版,结果发现不对。原因在于在本题中要求的长按模式比子序列更为严格:首先name的开头和结尾字符要和typed的开头和结尾字符相同,此外typed的字符顺序要和name相同,中间不得插入其他字符。后来又想到另一种思路:把typed中前后相同的字符进行压缩原创 2021-01-16 22:16:17 · 379 阅读 · 1 评论 -
leetcode 之 move zeros
问题来源:move zeros问题描述:给定一个数组,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。看到该问题第一个感觉很easy啊,抬手就来:void moveZeroes(vector<int>& nums) { int start=0,end=nums.size()-1; while(start<end) { while(start<end&&nums[start]!=0) start原创 2020-10-23 22:12:55 · 282 阅读 · 0 评论 -
leetcode之Isomorphic strings
问题来源:Isomorphic strings问题描述:给定两个字符串,判断它俩是否满足同构关系。同构关系表示两个字符串的字符能一一对应,例如title和paper构成同构关系,而foo和bar不构成同构关系。该问题属于一个比较简单的题目,利用两个map分别对每个字符串的字符建立映射关系即可判断两个字符串是否满足同构关系(注意:必须要用两个map,可以利用ab和aa来理解)。该问题的有趣之处在于它有多种解决思路,而且相比原始思路会使代码更加简洁。解法一如果给定字符串的每个字符都是ASCII码(事实也原创 2020-10-21 23:20:36 · 166 阅读 · 0 评论 -
leetcode 之 Merge k Sorted Lists
问题来源:Merge k Sorted Lists该问题是一个很经典的问题,给定k个有序链表将其合并成1个有序链表。很多人应该在实际的面试中遇到过该问题(至少我会经常问面试者该问题,因为接着可以问堆相关的算法~)。为啥要针对该经典问题写篇博客呢,是因为该问题确实会在日常工作中出现,但是却很少有人想到用优化的算法来解决该问题。我们先看一下该问题的两种优化解法。解法一最常用的方法是利用最小堆(链...原创 2019-03-16 15:27:17 · 1812 阅读 · 0 评论 -
leetcode之Find All Numbers Disappeared in an Array
问题来源:Find All Numbers Disappeared in an Array 很久没有刷题了,感觉大脑开始迟钝,所以决定重拾刷题的乐趣。一开始不要太难,选一些通过率高的题目做,然后就看到了这个题目。我有些吃惊,这个题我虽然知道两种解法,但本身还是有难度的,居然通过率这么高。然后就搜索相关网页,看到一个和它很接近的题目《Find All Duplicates in an Array》,原创 2016-12-24 18:21:10 · 10608 阅读 · 0 评论 -
leetcode之Largest Rectangle in Histogram
问题来源:Largest Rectangle in Histogram 问题描述:给定一个长度为n的直方图,我们可以在直方图高低不同的长方形之间画一个更大的长方形,求该长方形的最大面积。例如,给定下述直方图,我们 可以以高度5宽度2画一个更大的长方形,如下图,该长方形即是面积最大的长方形。 该问题是难度比较大的问题,但是很出名,经常作为面试题出现。最近陈利人老师给出该问题的一个O(n)原创 2016-07-30 13:47:33 · 9054 阅读 · 0 评论 -
leetcode 之 Single Number II
问题来源:Single Number II 问题描述:给定一个整数数组,除了一个整数出现一次之外,其余的每一个整数均出现三次,请找出这个出现一次的整数。 大家可能很熟悉另一个题目(SingleNumber):除了一个数出现一次之外,其余的均出现两次,找到出现一次的数。该问题很简单,大家肯定都知道解法:将所有的数异或,最后的结果即是出现一次的数。用到的知识是A^A=0,原创 2016-01-28 00:20:22 · 7878 阅读 · 13 评论 -
leetcode之 Palindrome Partitioning I&II
1 Palindrome Partitioning问题来源:PalindromePartitioning该问题简单来说就是给定一个字符串,将字符串分成多个部分,满足每一部分都是回文串,请输出所有可能的情况。 该问题的难度比较大,很可能第一次遇到没有思路,这很正常。下面我们一点点分析,逐步理清思路。先不考虑所有的情况,针对一个符合条件的划分,每一部分都是一个回文子串,而且原创 2013-11-20 21:06:00 · 16056 阅读 · 20 评论 -
leetcode之 Generate Parentheses
题目:http://oj.leetcode.com/problems/generate-parentheses/描述:给定一个非负整数n,生成n对括号的所有合法排列。解答:该问题解的个数就是卡特兰数,但是现在不是求个数,而是要将所有合法的括号排列打印出来。 该问题和《编程之美》的买票找零问题一样,通过买票找零问题我们可以知道,针对一个长度为2n的合法排列,第1到2n个位原创 2013-10-26 23:19:18 · 24345 阅读 · 13 评论 -
集合元素的排列与子集
一、 集合的排列 给定一个集合S,含有n个不重复的元素,输出该集合元素的所有排列,leetcode对应题目为:http://oj.leetcode.com/problems/permutations/。打印所有排列的复杂度为O(n*n!),因为共有n!个不同的排列,打印每个排列的复杂度为O(n)。打印所有的排列一般采用深搜策略,先给出一个常规的方法:vo原创 2013-10-26 22:28:56 · 6119 阅读 · 0 评论 -
leetcode之word ladder
对于之前没有接触过该类型题目的人来说,此题无疑是个难题,本人提交了10次才正确通过,期间遇到了非常多的问题,感觉几乎把OJ的所有错误遍历了一遍,下面详细说说自己做该题的经验。首先承认,我一开始并没有想到什么图模型,或者说是一点思路都没有。然后我就冥思苦想,首先想到了可以先构造一个二维矩阵,判断给定的词之间是否能两两一步到达,这一步可以通过两层循环加字符串的遍历完成,应该不难。获得这原创 2013-10-20 19:30:13 · 19291 阅读 · 6 评论 -
leetcode之 median of two sorted arrays
这是我做的第二个leetcode题目,一开始以为和第一个一样很简单,但是做的过程中才发现这个题目非常难,给人一种“刚上战场就踩上地雷挂掉了”的感觉。后来搜了一下leetcode的难度分布表(leetcode难度及面试频率)才发现,该问题是难度为5的问题,真是小看了它!网上搜了很多答案,但是鲜见简明正确的解答,唯有一种寻找第k小值的方法非常好,在此整理一下。 首先对leetcode的原创 2013-09-10 00:15:50 · 95688 阅读 · 35 评论