
leetcode
文章平均质量分 63
ljh0302
软件研发工程师
后端Java,前端Angular
展开
-
Leetcode-Dynamic Programming题目总结
动态规划Dynamic Programming:通过把原问题分解为相对简单的子问题的方法来求解复杂问题的方法。把求解的问题分成多个阶段或多个子问题,然后按照顺序求解各子问题。前一子问题的解,为后一问题的求解提供了有用信息。依次解决各个子问题,最后一个阶段的解就是初始问题的解。动态规划问题,大致可以通过以下4个步骤:1)划分状态,即划分子问题2)状态表示,即如何让计算机理解子问题。...原创 2020-03-17 11:21:11 · 638 阅读 · 0 评论 -
Leetcode-backtracking题目总结
Leetcode-78.Subsets (全组合问题)Given a set ofdistinctintegers,nums, return all possible subsets (the power set).Note:The solution set must not contain duplicate subsets.Input: nums = [1,2,3] O...原创 2020-02-28 12:10:40 · 406 阅读 · 0 评论 -
[leetcode]-30-Substring with Concatenation of All Words
题目:You are given a string,s, and a list of words,words, that are all of the same length. Find all starting indices of substring(s) insthat is a concatenation of each word inwordsexactly once a...原创 2020-02-05 16:10:24 · 546 阅读 · 0 评论 -
[leetcode]-238. Product of Array Except Self
题目:Given an arraynumsofnintegers wheren> 1, return an arrayoutputsuch thatoutput[i]is equal to the product of all the elements ofnumsexceptnums[i].Example:Input: [1,2,3,4]Out...原创 2020-02-05 15:17:02 · 210 阅读 · 0 评论 -
[leetcode]-523-Continuous Subarray Sum
题目:Given a list ofnon-negativenumbers and a targetintegerk, write a function to check if the array has a continuous subarray of size at least 2 that sums up to a multiple ofk, that is, sums up ...原创 2020-02-03 20:13:56 · 285 阅读 · 0 评论 -
[leetcode]-525. Contiguous Array
题目:Given a binary array, find the maximum length of a contiguous subarray with equal number of 0 and 1.Example 1:Input: [0,1]Output: 2Explanation: [0, 1] is the longest contiguous subarray wi...原创 2020-02-03 20:07:32 · 192 阅读 · 0 评论 -
[leetcode]-954. Array of Doubled Pairs
题目:Given an array of integersAwith even length, returntrueif and only if it is possible to reorder it such thatA[2 * i + 1] = 2 * A[2 * i]for every0 <=i < len(A) / 2.示例:Input: [4,...原创 2020-02-01 20:22:34 · 209 阅读 · 0 评论 -
[leetcode]-10 Regular Expression Matching
描述:Given an input string (s) and a pattern (p), implement regular expression matching with support for'.'and'*'.'.' Matches any single character. '*' Matches zero or more of the preceding eleme...原创 2020-01-10 20:59:04 · 181 阅读 · 0 评论 -
[leetcode]-1293 Shortest Path in a Grid with Obstacles Elimination
题目:Given am * ngrid, where each cell is either0(empty)or1(obstacle).In one step, you can move up, down, left or right from and to an empty cell.Return the minimum number of steps to walk f...原创 2020-01-09 21:25:43 · 556 阅读 · 0 评论 -
[leetcode]-460 LFU Cache
题目:Design and implement a data structure forLeast Frequently Used (LFU)cache. It should support the following operations:getandput.get(key)- Get the value (will always be positive) of the ke...原创 2020-01-07 21:06:52 · 228 阅读 · 0 评论 -
[leetcode]-542 01 Matrix
基本思路:对每个cell,设与最近0的距离为d,按d=0~nRows+nCols进行对其附近的cell进行搜索,若搜索到0则立即返回当时的d值d = 0 即对应自身为0的情形。代码:class Solution {public: vector> updateMatrix(vector>& matrix) { int nRows = matrix.size();原创 2017-03-27 21:34:57 · 361 阅读 · 0 评论 -
剑指Offer-树的子结构
这道题题目的思路总结:1)二叉树B当前节点值等于二叉树A当时节点值,则递归地去匹配B的左子树和A的左子树,B的右子树和A的右子树2)二叉树B当前节点值不等于二叉树A当时节点值,则考虑B是否是A的左子树的子结构,或者B是A的右子树的子结构开始的时候我试图用一个函数的递归解决这个问题,但是我发现,空树不是任何子树的子结构,所以终止条件有些问题,下面的文章用了两个函数,就很好的解决了这个问题。下面转自h...转载 2018-05-29 14:46:04 · 163 阅读 · 0 评论 -
剑指Offer-按之字形顺序打印二叉树
题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。整体思路看到这个题目的第一个想法是和按行打印二叉树很相似,而按行打印二叉树是利用队列来实现的;但是这里要求按之字形,于是考虑用两个栈来实现。两个栈分别存放奇数行的节点和偶数行的节点,考虑到奇数行从左到右打印,偶数行从右到左打印;1)初始的时候栈st...原创 2018-06-12 15:37:40 · 202 阅读 · 0 评论 -
剑指Offer-包含min函数的栈
题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。基本思路:利用两个栈,一个数据栈,一个辅助栈(保存当前栈中数据的最小值)数据栈和辅助栈中任何时候元素个数相同,辅助栈栈顶的元素对应数据栈当前所有数据的最小值push操作最重要的操作,如果进栈元素value小于辅助栈栈顶元素,则value进入辅助栈;否则辅助栈的栈顶元素min再次进入一次辅助栈,成为新的栈顶元素数据栈和辅助...原创 2018-05-30 14:52:31 · 132 阅读 · 0 评论 -
剑指Offer-二进制中1个个数
转自https://www.cnblogs.com/AndyJee/p/4630568.html题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路:很明显,这道题考察的是位运算。1、依次将整数右移,判断整数最后一位是否为1(&1);问题:如果该整数为负数,则会陷入无限循环,为什么?因为负数右移的时候,左边补1,整数右移过程中不可能为0,因此会陷入无限循环。补码的移位...转载 2018-05-30 18:36:34 · 200 阅读 · 0 评论 -
剑指Offer-两个链表的第一个公共节点
一、题目:两个链表的第一个公共节点题目:输入两个链表,找出它们的第一个公共结点。 链表结点定义如下,这里使用C#语言描述: public class Node { public int key; public Node nextNode; public Node(int key) { this...转载 2018-06-06 17:02:46 · 1079 阅读 · 0 评论 -
剑指Offer-打印出二叉树中结点值的和为输入整数的所有路径
题目描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。深度优先搜索。使用前序遍历,使用两个全局变量allpath和tmp,allpath来存放最终所有满足的路径,tmp用来存放临时的一条路径。每次遍历,我们先把root的值压入tmp,然后判断当前root是否同时满足:等于当前数值;左子树为空;右子树为空。...原创 2018-06-06 18:33:30 · 227 阅读 · 0 评论 -
剑指Offer-机器人的运动范围
题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?算法思路定义和方格大小一样的布尔值矩阵visit...原创 2018-06-13 18:27:58 · 185 阅读 · 0 评论 -
剑指Offer-矩阵中的路径
题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了...原创 2018-06-13 18:37:16 · 211 阅读 · 0 评论 -
剑指Offer-栈的压入弹出序列
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思路:一个数据栈stack1,一个辅助栈stack2(1)如果下一个弹出序列中的数字刚好是...原创 2018-05-31 13:06:14 · 189 阅读 · 0 评论 -
剑指Offer-字符串的匹配
转载地址:https://www.cnblogs.com/AndyJee/p/4700373.html题目:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不...转载 2018-06-07 14:13:49 · 390 阅读 · 0 评论 -
剑指Offer-二叉搜索树的后序遍历序列
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。首先我们给出二叉搜索树的定义:二叉搜索树,也称有序二叉树,排序二叉树,是指一棵空树或者具有下列性质的二叉树:1. 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;2. 若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值...原创 2018-05-31 14:47:54 · 215 阅读 · 0 评论 -
剑指Offer-序列化反序列化二叉树
转自http://cuijiahua.com/blog/2018/01/basis_61.html一、前言本系列文章为《剑指Offer》刷题笔记。刷题平台:牛客网书籍下载:共享资源二、题目请实现两个函数,分别用来序列化和反序列化二叉树。1、思路这道题思路简单,使用前序遍历来序列化和发序列化即可。只要自己写的程序格式对应上即可。可以使用$符号表示NULL,同时每个结点之间,需要添加逗号,即','进行...转载 2018-06-15 10:56:59 · 197 阅读 · 0 评论 -
剑指Offer-把数组排成最小的数
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。算法思路1、定义字符串比较函数compare2、将整数数组转化成字符串数组,利用冒泡排序,得到排序后的字符串数组。class Solution {public: bool compare(string a...原创 2018-06-25 14:24:28 · 283 阅读 · 0 评论 -
剑指Offer-数组中的逆序对
链接:https://www.nowcoder.com/questionTerminal/96bd6684e04a44eb80e6a68efc0ec6c5来源:牛客网看到这个题目,我们的第一反应是顺序扫描整个数组。每扫描到一个数组的时候,逐个比较该数字和它后面的数字的大小。如果后面的数字比它小,则这两个数字就组成了一个逆序对。假设数组中含有n个数字。由于每个数字都要和O(n)这个数字比较,因此这个...原创 2018-06-25 15:40:29 · 273 阅读 · 0 评论 -
剑指Offer-链表中环的入口节点
判断链表中是否有环使用追赶的方法,设定两个指针slow、fastslow、fast,均从头指针开始,每次分别前进1步、2步。如存在环,则两者相遇;如不存在环,fastfast遇到NULLNULL退出。slow、fastslow、fast,均从头指针开始,每次分别前进1步、2步。如存在环,则两者相遇;如不存在环,fastfast遇到NULLNULL退出。其中主要的思想就是“环形相遇追及问题”,理解上...转载 2018-06-26 10:14:19 · 3342 阅读 · 3 评论 -
网易笔试题-堆棋子
转自:https://blog.youkuaiyun.com/u013616945/article/details/77750698题目小易将n个棋子摆放在一张无限大的棋盘上。第i个棋子放在第x[i]行y[i]列。同一个格子允许放置多个棋子。每一次操作小易可以把一个棋子拿起并将其移动到原格子的上、下、左、右的任意一个格子中。小易想知道要让棋盘上出现有一个格子中至少有i(1 ≤ i ≤ n)个棋子所需要的最少...转载 2018-06-27 11:29:26 · 579 阅读 · 0 评论 -
《程序员面试金典》--寻找二叉树中两个节点的第一个公共祖先(三种情况)
转载地址:https://blog.youkuaiyun.com/zdplife/article/details/49424975/****************************************************************************************************************题目描述:给定一颗二叉树,以及二叉树中的两个节点,找出这...转载 2018-07-10 10:10:25 · 672 阅读 · 0 评论 -
剑指offer——二叉树的下一个节点
我的代码实现:/*struct TreeLinkNode { int val; struct TreeLinkNode *left; struct TreeLinkNode *right; struct TreeLinkNode *next; TreeLinkNode(int x) :val(x), left(NULL), right(NULL), nex...转载 2018-06-12 10:21:57 · 321 阅读 · 0 评论 -
剑指Offer-丑数
转载地址:https://www.jianshu.com/p/9598e96ea6b6题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。求按从小到大的顺序的第1500个丑数。习惯上把1当做第一个丑数解法一:判断一个数是否是丑数:bool isUglyNumber(int number) { while (number % 2 == 0) { numbe...转载 2018-06-04 19:01:53 · 192 阅读 · 0 评论 -
[Leetcode]-56 Merge Intervals
在解决这个问题的时候,我的思路是: Interval的形式为(start,end)1)按照Interval的第一个数值start进行排序,得到排序后数组2)现在对排序后的数组进行合并操作,我们想象有一条直线,所有的间隔都是线段考虑一个间隔I1=(s1,e1)和它的后一个间隔I2=(s2,e2),因为已经排好序,所以s1<s2当e1 < s2的时候,I1与I2不重合,根据有序性可知I2之...原创 2018-05-22 16:29:33 · 137 阅读 · 0 评论 -
[leetcode]-543. Diameter of Binary Tree
思路:diameter保存最大的直径,每次更新该值depthOfBinary利用分治算法计算树的深度:分解为子问题,分别求得左右子树的深度lDepth,rDepth,两者相加+2就是该节点下的最大直径。代码:class Solution {public: int diameter = 0; int diameterOfBinaryTree(TreeNode* ro原创 2017-03-27 22:23:31 · 328 阅读 · 0 评论 -
[leetcode] -6 ZigZag Conversion
zigzag pattern 即之字型,字母“Z”型,convert函数要求将一个Z字形按列读取的字符串转换为按行读取的字符串。基本思路是按行顺序读取并存入结果字符串,总行数为min(nRows,len),nRows为Z字的行数,len为源字符串的总长度。下面用图来说明:行数k=1,nRows时,读取第一个字符后,下一个字符与当前字符在源字符串中的距离为step = 2(n原创 2017-03-21 13:46:28 · 367 阅读 · 0 评论 -
[leetcode] - 541 Reverse String II
比较简单,直接放代码,注意string的用法即可。class Solution {public: string reverseStr(string s, int k) { int len = s.size(); int n = 2 * k; string res; while(len >= 2 * k){原创 2017-03-28 17:02:19 · 280 阅读 · 0 评论 -
[leetcode]-539 Minimum Time Difference
注意两点:1、计算两个时刻的时间差时,将两个时刻都换算成分钟(h*60+m),计算差的绝对值diff。若diff > 12*60,diff应该变为24*60-diff2、注意不要将所有时刻的差值都存储下来,因为需要的空间为O(n*n),这样会报内存错误。class Solution {public: int findMinDifference(vector& timePoin原创 2017-03-28 20:15:00 · 365 阅读 · 0 评论 -
[leetcode]- 538. Convert BST to Greater Tree
刷这道题的时候,并没有想到中序遍历的方法,对于树的遍历算法应该去复习一下了没有思路,于是上网查找了一些解法,下面的解法简单机智。转载地址:http://blog.youkuaiyun.com/qazwyc/article/details/63685401Given a Binary Search Tree (BST), convert it to a Greater Tree such tha转载 2017-03-29 20:29:08 · 541 阅读 · 0 评论 -
[leetcode]-537 Complex Number Multiplication
这道题是复数相乘的题目,个人感觉还是比较简单的。写了几个小函数解决。intergerToString:整数转换成string类型getRealAndImag:从string类型的复数里提取出实部和虚部(int类型)class Solution {public: string complexNumberMultiply(string a, string b) {原创 2017-04-01 11:49:28 · 600 阅读 · 0 评论 -
[leetcode]-8 String to Integer (atoi)
这道题目本身并不难,难点是"consider all possible input cases" 1)首先需要过滤数字开始前的空格2)必须以正号或负号或数字开始,形成一个合法的数字,遇到其他字符后数字结束3)int类型的数字比如在范围-(INT_MAX+1)~INT_MAX,超过这个值的数字,整数返回INT_MAX,负数返回-(INT_MAX+1)class Solution {原创 2017-04-02 09:24:49 · 451 阅读 · 0 评论 -
[leetcode] 5-Longest Palindromic Substring
Palindromic Substring:回文子串,即一个字符串从左向右写和从右向走写是一样的,或者说字符串是对称。解决思路:遍历字符串,依次找到所有回文子串的中间位置,分别尝试往两边扩展到最大长度。取所有得到的回文子串中最长的。一个回文子串的中间位置有两种可能,1)形如----aa-----即s[i] == s[i-1]2)形如----axa----即s[i] == s[i-2原创 2017-03-16 18:50:35 · 317 阅读 · 0 评论 -
[leetcode]-532 K-diff Pairs in an Array
这道题目不难,注意的点有两点:1)(i,j)和(j,i)只计算一次2)同样的(i,j)只计算一次刚开始一直报错,因为自己定义了结构了“pair”,后来发现是c++中有自带的pair模板类型,这里没有使用,使用了自定义的pairnumtypedef struct pairnum{ int x; int y;};class Solution {public:原创 2017-04-04 14:28:41 · 395 阅读 · 0 评论