LeetCode解题报告汇总! All in One!

做者: 负雪明烛
id: fuxuemingzhugit


把本身刷过的全部题目作一个整理,而且用简洁的语言归纳了一下思路,汇总成了一个表格。算法

题目的排列顺序是按照先Easy再Medium再Hard排列的,暂时尚未把题目所有整理完成。后序我会把刷过的全部的题目都整理到这个文档里。api

题目 难度 解法  
566. Reshape the Matrix Easy 变长数组,求余法,维护行列计算在新的数组中的位置  
567. Increasing Order Search Tree Easy 直接中序遍历的结果放到链表结尾  
568. Jewels and Stones Easy 字典统计次数  
569. Unique Email Addresses Easy 字符串+set统计个数  
570. To Lower Case Easy ASIIC码操做ord,chr  
571. Unique Morse Code Words Easy 字典映射 + set统计个数  
572. Sort Array By Parity Easy 自定义sorted函数的cmp为数字mod 2  
573. Hamming Distance Easy 先异或 再数1的个数  
574. Robot Return to Origin Easy Counter统计,判断是否相等  
575. Flipping an Image Easy 直接计算新的数组的每一个位置的值便可  
576. Merge Two Binary Trees Easy 树的递归操做  
577. Implement strStr() Easy 字符串遍历+切片是否相等的判断  
578. Find and Replace Pattern Easy 直接使用字典作映射  
579. Binary Tree Pruning Medium 二叉树的后序遍历  
580. Array Partition I Easy 排序+求和  
581. Self Dividing Numbers Easy 直接遍历区间的每一个数字进行判断  
582. Peak Index in a Mountain Array Easy 二分查找的变种,使用Mid位置和左右位置比较  
583. Sort Array By Parity II Easy 分别求出奇偶数组而后拼接  
584. Projection Area of 3D Shapes Easy 分别计算三视图的面积便可  
585. Smallest Range I Easy 直接数学计算  
586. Transpose Matrix Easy 先构建数组再遍历实现翻转  
587. N-ary Tree Preorder Traversal Easy 多叉树的先序遍历,能够用递归和迭代  
588. N-ary Tree Postorder Traversal Easy 多叉树的后序遍历  
589. Intersection of Two Arrays II Easy 先排序而后用两个指针移动找出数组交集  
590. Middle of the Linked List Easy 快慢指针同时向链表后面移动  
591. Search in a Binary Search Tree Easy BST中节点的查找,递归  
592. Number of Recent Calls Easy 找出知足必定条件的区间长度,可使用二分或者队列  
593. Maximum Depth of N-ary Tree Easy 求树的高度,可使用BFS和DFS  
594. Reverse Words in a String III Easy 字符串的单词分别翻转再拼接到一块儿就行了  
595. Number of Lines To Write String Easy 使用字典保存每一个字符的长度,而后统计每行的长度是否超过100就行了  
596. Reverse String Easy 字符串翻转,[::-1  
597. Subdomain Visit Count Easy 字典保存每一个子域名出现的次数便可  
598. Number Complement Easy 求数字的补数,方法是异或上与其二进制数字的长度相等的全1二进制数  
599. Shortest Distance to a Character Easy 过两遍数组,分别找出距离左边和右边的这个字符的最短距离  
600. Keyboard Row Easy 使用字典保存每行元素,而后看每一个单词是否是只由一行元素组成  
601. Groups of Special-Equivalent Strings Easy 把奇偶位置都取出来,从新拼接成字符串做为指纹,看总的有多少种指纹  
602. Leaf-Similar Trees Easy 先序、中序、后序都能获得叶子序列  
603. Uncommon Words from Two Sentences Easy 使用字典统计每一个单词出现的次数,而后看字典keys()的交集,而后在字典中看是否是只出现了一次  
604. Toeplitz Matrix Easy 判断每一个斜线是否相等,方法是判断每一个元素是否和其左上角元素相等  
605. Island Perimeter Easy 求小岛的周长。使用全部陆地个数×4-相交部分×2.  
606. Baseball Game Easy 用一个栈进行模拟  
607. Binary Gap Easy 二进制表示中1的最大间距,保留上一个1的位置便可  
608. Maximum Depth of Binary Tree Easy 二叉树的高度,能够用DFS和BFS  
609. Single Number Easy 全部的数字出现了两次,其中一个只出现了一次。找出这个数字的方法可使用字典统计或者异或运算  
610. Next Greater Element I Easy 找出某个数字右边比他大的数字,直接遍历查找就行了  
611. Average of Levels in Binary Tree Easy 求每层的二叉树的均值,可使用BFS和DFS  
612. Binary Number with Alternating Bits Easy 判断数字的二进制表示是否是01交错的。直接遍历判断,或者位运算。  
613. Prime Number of Set Bits in Binary Representation Easy 判断二进制数字的1的个数是否是质数  
614. Reverse Only Letters Easy 只翻转字母其他字符不动,可使用栈、双指针  
615. Nim Game Easy 判断输入数字是否是4的倍数便可  
616. Goat Latin Easy 字符串处理,简单  
617. Surface Area of 3D Shapes Easy 统计立方体个数,减去相交面积  
618. Letter Case Permutation Easy 经典回溯法,把字符的大小写分别拼接到字符串尾部  
619. Add Digits Easy 两重循环,一直对每位数字求和直到剩余个位数  
620. Move Zeroes Easy 使用一个指针指向第一个为0的位置,而后遍历不是0的位置进行交换  
621. Shortest Completing Word Easy 找出符合某个模式的字符串,直接处理就行了  
622. Employee Importance Easy dfs  
623. Find the Difference Easy 找多出来的字符,可使用字典,也可使用异或  
624. Detect Capital Easy 统计大写字符的个数,判断是否是在首位  
625. Find All Numbers Disappeared in an Array Easy 用set去重,找出没有出现的数字便可  
626. Count Binary Substrings Easy 先找出连续的0,1个数,而后进行交错求最小值,在求和  
627. 4Sum II Easy 4sum,先肯定两个数字,而后看剩余两个数字的和是否出现过  
628. Rotated Digits Easy 字典保存翻转后的数字,判断是否相等便可。  
629. Two Sum IV - Input is a BST Easy BFS或者DFS,在遍历的过程当中进行破案吨  
630. Sum of Two Integers Easy 位运算  
631. Intersection of Two Arrays Easy 用两个set求交集,而后转成List便可  
632. Construct String from Binary Tree Easy 先序遍历,能够省略右子树,因此须要作一个节点是否存在的判断  
633. Reverse Linked List Easy 翻转单链表,可使用递归和迭代  
634. Majority Element Easy Moore投票法,或者字典统计次数  
635. Excel Sheet Column Number Easy 26进制,没有难度  
636. Roman to Integer Easy 使用字典保存映射,遍历求值就行了。  
637. Reorder Log Files Easy 分割排序,再拼接  
638. Best Time to Buy and Sell Stock Easy 一次遍历,若是后一天比前一天大就买了卖  
639. Valid Anagram Easy 判断字符串是不是同构的,直接统计词频或者排序  
640. Lemonade Change Easy 贪心算法,找零钱先找大的面额,若是不够再用小的面额  
641. Contains Duplicate Easy 判断数组是否有重复,能够统计词频,判断set长度是否相等,排序等方法  
642. Construct Quad Tree Easy 创建四叉树,使用递归,判断4个叶子所有是0或者1  
643. Design HashMap Easy 设计一个字典,直接开个很大的数组便可,内存放得下  
644. Convert BST to Greater Tree Easy 把每一个节点变成比它大的节点的值的和,采用逆中序遍历。  
645. Same Tree Easy 判断两棵数是否相等,直接递归  
646. Minimum Absolute Difference in BST Easy 中序遍历,保存前一个节点,当前节点的值减去前一个节点的值  
647. Minimum Distance Between BST Nodes Easy 和上题彻底同样  
648. Ransom Note Easy 使用字典统计每一个字符出现的次数,前者小于后者便可  
649. Rotate String Easy 字符串切片  
650. 1-bit and 2-bit Characters Easy 单次遍历,判断前面知足的条件下,最后一位是0便可。  
651. Minimum Moves to Equal Array Elements Easy 把n-1个数字加1,相等于把最大值-1.求和-n*最小值  
652. Flood Fill Easy 对相同颜色进行染色,可使用DFS和BFS.  
653. Sum of Left Leaves Easy 求全部左叶子的和,要判断是否是在左边,判断是否是叶子,而后加到结果中  
654. Number of Boomerangs Easy 统计回旋镖的个数,不能暴力解决,须要使用排列组合公式n*(n-1)  
655. Range Addition II Easy 求队列的最小值便可  
656. Construct the Rectangle Easy 从算术平方根开始找约数便可  
657. Two Sum II - Input array is sorted Easy 先后指针同时向中间走,找到target以后中止  
658. First Unique Character in a String Easy 首先作个字符出现次数的统计,而后再次遍历,找出只出现了一次的第一个字符。  
659. Degree of an Array Easy 求最大的出现次数的全部数字,其最左右出现的位置差的最小值  
660. Assign Cookies Easy 贪心算法,尽量给小孩知足其欲望的饼干  
661. Convert Sorted Array to Binary Search Tree Easy 构建BST,使用中间数进行分割,用递归  
662. Relative Ranks Easy 相对排名,可使用堆或者排序或者argsort  
663. Image Smoother Easy 直接暴力求平均便可  
664. Longest Palindrome Easy 统计出现次数的奇偶就能够  
665. Minimum Index Sum of Two Lists Easy 保存出现的索引和与元素的对应,使用堆保存最小的就行  
666. Missing Number Easy 理论和-当前和  
667. Binary Tree Tilt Easy 后序遍历函数返回的是左右子树的差,在里面用变量求和  
668. Positions of Large Groups Easy 找到长度大于3的连续字符,须要判断结束!!  
669. Intersection of Two Arrays II Easy 能够排序,也可使用字典统计次数  
670. Diameter of Binary Tree Easy 递归求树的深度,同时求左右两个深度的和的最大值  
671. Student Attendance Record I Easy 统计A的个数,而且判断连续L的个数  
672. Best Time to Buy and Sell Stock Easy 保存当前的最小值以及最大收益便可  
673. Maximum Product of Three Numbers Easy 找出三个数最大的乘积  
674. Binary Watch Easy 使用combinations函数  
675. Min Cost Climbing Stairs Easy 动态规划  
676. Long Pressed Name Easy 使用双指针,统计连续字符出现的次数  
677. Reverse String II Easy Python的切片翻转  
678. Design HashSet Easy 直接开数组就行  
679. Binary Tree Level Order Traversal II Easy DFS和BFS均可以  
680. Base 7 Easy 转成7进制  
681. Distinct Subsequences Easy 动规,判断当前字符是否相等  
682. Merge Two Sorted Lists Easy 可使用递归或者迭代  
683. Poor Pigs Easy 相似拨号键盘,多维空间求解  
684. Binary Tree Paths Easy 打印二叉树的路径,使用递归和迭代  
685. Backspace String Compare Easy 字符串能够退格,使用栈轻松解决  
686. Happy Number Easy 递归和迭代两种作法  
687. Longest Continuous Increasing Subsequence Easy 简单的动态规划  
688. Find Smallest Letter Greater Than Target Easy 线性扫描或者二分  
689. Pascal’s Triangle Easy 提早构造出来,而后处理每行便可  
690. Second Minimum Node In a Binary Tree Easy 递归的时候找第二小值  
691. Longest Word in Dictionary Easy 先排序,再找前缀是否存在。  
692. Remove Element Easy 使用双指针或者标记指针使得前面都是知足要求的,后面都不知足  
693. Climbing Stairs Easy 动态规划  
694. Add Strings Easy 直接模拟大整数加法,须要注意进位问题  
695. Lowest Common Ancestor of a Binary Search Tree Easy BST找公共祖先,使用递归很简单  
696. Longest Harmonious Subsequence Easy 统计相邻的数字是否都存在便可  
697. Symmetric Tree Easy 可使用BFS和DFS两种方法  
698. Maximum Subarray Easy 动态规划找子数组最大和  
699. Most Common Word Easy 正则+统计  
700. Power of Two Easy 判断二进制是否是只有1个1便可  
701. Convert a Number to Hexadecimal Easy 转成16进制,难点在于负数的处理:加上1<<32  
702. Remove Duplicates from Sorted List Easy 递归和循环  
703. Power of Three Easy 循环和迭代  
704. Number of 1 Bits Easy 使用位移统计二进制个数  
705. Path Sum III Easy 找路径的个数,使用DFS*2或者BFS+DFS  
706. Binary Search Easy 二分的模板  
707. Pascal’s Triangle II Easy 原地翻转能够用倒序遍历  
708. Implement Queue using Stacks Easy 两个栈实现一个队列  
709. Subtree of Another Tree Easy DFS*2或DFS+BSF  
710. House Robber Easy 简单dp,当前房间偷和不偷两种状态  
711. Kth Largest Element in a Stream Easy 使用小根堆维护k个值,则第一个元素就是第k大元素  
712. Reverse Vowels of a String Easy 使用栈进行翻转,或者使用双指针  
713. Plus One Easy 使用carry表示进位  
714. Ugly Number Easy 除去2,3,5因子便可  
715. Search Insert Position Easy 二分查找  
716. Set Mismatch Easy 使用统计次数或者直接求和计算  
717. Largest Number At Least Twice of Others Easy 找出最大值,而后弹掉,再找次大值便可。  
718. Power of Four Easy 递归和迭代  
719. Find Pivot Index Easy 先求和,在遍历求前半部分的和,找出左边等于右边  
720. Palindrome Number Easy 能够先翻转成整数,而后判断和原来的是否相等  
721. License Key Formatting Easy 计算第一个分割的长度,后面都是等长的了  
722. Two Sum Easy 保存已经出现过的数字的索引,当下次遍历的时候遇到了知足要求的结果,那么既是中止  
723. Repeated Substring Pattern Easy 判断每一个子串重复屡次能不能组成原来的串便可  
724. Maximize Distance to Closest Person Easy 从前向后以及从后向前遍历两次,取最近距离  
725. Count and Say Easy 统计字符连续出现的次数,并说出来,须要注意最后的一个字符也要添加上去  
726. Remove Duplicates from Sorted Array II Easy 快指针移动判断和慢指针是否相等,若是不等就换到前面来  
727. Maximum Average Subarray I Easy 必定注意是长度为k的滑动窗口,注意下标  
728. Find Mode in Binary Search Tree Easy 若是使用附加空间,可使用字典保存次数;不然须要遍历两次,判断出现次数。  
729. Guess Number Higher or Lower Easy 使用二分查找  
730. Network Delay Time Easy dijkstra算法  
731. Quad Tree Intersection Easy 递归构造  
732. Factorial Trailing Zeroes Easy 数有多少个5就好了  
733. Arranging Coins Easy 二分查找知足条件的层数便可  
734. Implement Stack using Queues Easy 使用一个队列就能实现栈,每次Push的时候,把队列里的全部元素弹出再放进来就行了。  
735. Add Binary Easy 使用进位进行模拟  
736. Number of Segments in a String Easy string.split()默认就是按照多个空格分割  
737. Path Sum Easy 递归和迭代都能知足  
738. Isomorphic Strings Easy 分别看s到t的映射和t到s的映射是否是一一映射的  
739. String Compression Easy 使用Pos变量维护应该放到哪一个位置,而后一次遍历统计次数就行了  
740. Range Sum Query - Immutable Easy 保存每一个位置的累积和  
741. Find All Anagrams in a String Easy 滑动窗口,保存等长的子字符串中包含的字符数是否和另一个相等  
742. Valid Parentheses Easy 使用栈判断括号是否合法  
743. Magic Squares In Grid Easy 暴力判断每一个9*9的格子是否是知足题意的河图  
744. Linked List Cycle Easy 走两步走一步,看是否重合  
745. Remove Linked List Elements Easy 递归解法很差想,可是代码很简单  
746. Palindrome Linked List Easy 利用一个数组保存全部的数字,而后判断数组是否是回文的。  
747. Minimum Depth of Binary Tree Easy DFS/BFS,其实DFS更难  
748. Word Pattern Easy 一一映射  
749. Min Stack Easy 使用辅助栈保存最小值  
750. Contains Duplicate II Easy 使用字典保存出现的位置,当新的元素到来的时候,更新字典  
751. Valid Mountain Array Easy 两个while就能够了  
752. Merge Sorted Array Easy 从后向前进行遍历,每次找到大的日后移动  
753. X of a Kind in a Deck of Cards Easy 须要进行一个遍历,找到是否存在这个分组大小  
754. Valid Palindrome II Easy 须要用到双指针,先找到第一个不相等的位置,而后去除左边或者右边,判断是不是回文  
755. Longest Univalue Path Easy 定义的DFS是对过root的单臂进行循环,可是更新的结果是双臂,有点意思  
756. Longest Common Prefix Easy 遍历最短的子串的每一位,看全部字符串在这一位上是否是相等的  
757. Repeated String Match Easy 重复NB/NA + 3次,看b是否是在a里  
122.Best Time to Buy and Sell Stock II Easy 只要天天的比前面一天高,那么就买上而且卖掉便可  
758. Implement strStr() Easy 循环加切片  
759. Heaters Easy 找出最临近的距离  
760. Reach a Number Easy 数学题,很是不喜欢  
761. Nth Digit Easy 数学计算第多少位  
762. Sqrt(x) Easy 二分查找或者牛顿法  
763. Shortest Unsorted Continuous Subarray Easy 先排序,而后比较不等的位置  
764. Reverse Bits Easy 翻转二进制再转成整数  
765. Valid Palindrome Easy 过滤掉不是字母的字符,而后判断是否是回文便可  
766. Walking Robot Simulation Easy 模拟整个过程便可  
767. K-diff Pairs in an Array Easy 找绝对值出现等于k的次数,须要对k进行判断  
768. Excel Sheet Column Title Easy 须要对26取余,而且作个判断,由于0\26对26取余的结果是同样的  
769. Rotate Array Easy 可使用额外数组,也可以使用递归原地翻转  
770. Non-decreasing Array Easy 找到变小的位置,而后和再前面的数字进行判断,看是应该修改当前的仍是前面的  
771. Design Linked List Easy 本身实现链表,挺复杂的。可使用list进行模拟,方便不少。  
772. Range Sum of BST Medium 须要根据根节点的值进行判断,邮编和左边需不须要继续寻找  
773. Max Increase to Keep City Skyline Medium 分别找出行和咧的最大值,把每一个位置增加到行列最大值的最小值  
774. Encode and Decode TinyURL Medium 使用字典完成映射  
775. Maximum Binary Tree Medium 找到最大值,而后数组切片  
776. Insert into a Binary Search Tree Medium 递归解法,直接对当前节点进行操做!  
777. Find and Replace Pattern Medium 判断是否是一一映射  
778. Minimum Add to Make Parentheses Valid Medium 使用一个栈  
779. All Paths From Source to Target Medium 回溯法找路径  
780. Score After Flipping Matrix Medium 把行进行翻转,按列统计1的个数便可  
781. All Possible Full Binary Trees Medium 使用两种循环遍历可能构成的左子树和右子树,每次构建新的root  
782. Partition Labels Medium 使用字典保存每一个字符最后出现的位置,若是一个区间内字符的最后位置的都在一块儿,那么就添加到结果里  
783. Battleships in a Board Medium 直接数有多少小岛就行,判断小岛可使用它的最左上角元素便可  
784. Complex Number Multiplication Medium 复数运算,重点是分割字符串  
785. Counting Bits Medium i的二进制1个数等于i/2的二进制个数+i%2  
786. Spiral Matrix III Medium 保留循环更新步数,很恶心  
787. Custom Sort String Medium 统计次数,拼接成字符串  
788. Find All Duplicates in an Array Medium 原地变成负数,若是已是负数,那么说明出现了两次。  
789. Design Twitter Medium 使用优先级队列弹出最新的内容  
790. Keys and Rooms Medium 可使用DFS和BFS解决  
791. Queue Reconstruction by Height Medium 先插入长得高的他们不会影响别人,而后在对应位置插入次高的  
792. Find Bottom Left Tree Value Medium 层次遍历,找出最后一层的第一个节点便可  
793. Daily Temperatures Medium 使用一个栈,保存每一个元素,若是后面的元素比较大,那么就已知出栈操做  
794. Validate Stack Sequences Medium 使用栈进行模拟,不管如何都把当前的元素弹出,而后和弹出的元素进行比较,相等的话一直弹出  
795. Find Largest Value in Each Tree Row Medium 遍历每一层,找出最大值便可。  
796. Single Element in a Sorted Array Medium 可使用很风骚的二分查找k,  
797. Construct Binary Tree from Preorder and Postorder Traversal Medium 找到后序的倒数第二个元素就是右子树的根节点  
798. Single Number III Medium 使用异或或者字典解决  
799. Optimal Division Medium 这个题很是tricky,没意思  
800. Palindromic Substrings Medium 判断回文,须要判断去掉两头字符以后是否仍然是回文,动态规划  
801. Max Area of Island Medium 找到岛的数量,这个题可使用BFS或者DFS的方法  
802. Score of Parentheses Medium 可使用栈和递归,这个题很巧妙,是个不错的题目  
803. Complete Binary Tree Inserter Medium 使用数组保存每一个节点的指针,由于是彻底二叉树,因此节点位置除以2就获得了它的父亲节点  
804. Sort Characters By Frequency Medium 根据出现次数排序,而后构建新的字符串便可  
805. Escape The Ghosts Medium 找出是否存在更小的曼哈顿距离  
806. Binary Tree Inorder Traversal Medium 中序遍历自己很简单,可是这个递归的写法很差想  
807. Smallest Subtree with all the Deepest Nodes Medium 定义递归函数:返回<最大深度,最大深度对应的节点>  
808. Most Frequent Subtree Sum Medium 遍历求和,字典统计出现次数最多的全部元素  
809. Beautiful Arrangement Medium 经典回溯法,要背会  
810. Product of Array Except Self Medium 使用两次遍历,分别从左边和右边向中间靠拢  
811. Minimum ASCII Delete Sum for Two Strings Medium 和LCS很接近的DP题目  
812. Linked List Components Medium 判断当前节点在set中,可是下一个节点不在便可  
813. Top K Frequent Elements Medium 使用字典统计次数,使用优先级队列实现排序  
814. Minimum Moves to Equal Array Elements II Medium 找出中位数,而后求全部数字到中位数的距离和  
815. Permutations Medium 经典回溯法  
816. Teemo Attacking Medium 计算每次中毒的开始和结束时间  
817. Generate Parentheses Medium 经典回溯法  
818. Minesweeper Medium 扫雷游戏,使用DFS  
819. Beautiful Arrangement II Medium 每次把后面最大数字放到前面来就能增长一种新的差值  
820. Map Sum Pairs Medium 前缀树的题目,能够背一背  
821. Friend Circles Medium 并查集的题目  
822. Array Nesting Medium 一直遍历就行了,使用一个visited数组,但不是回溯。  
823. Most Stones Removed with Same Row or Column Medium 须要使用并查集,很是考验抽象能力  
824. Mirror Reflection Medium 镜像反射,须要找规律,分偶数和奇数进行讨论  
825. Implement Magic Dictionary Medium 找到存不存在汉明间距是1  
826. Rabbits in Forest Medium 对兔子出现次数进行统计,而后求一个公式。  
827. Max Chunks To Make Sorted Medium 从左到右遍历一次,时刻保持当前的最大值,若是当前最大值等于索引,那么chunck+1.  
828. Print Binary Tree Medium 先把二叉树构造出来,而后使用相似二分查找左右分治的方法。  
829. Implement Trie (Prefix Tree) Medium 构造字典树,是个好题,须要背会  
830. Replace Words Medium 使用字典树或者拉链法求解  
831. Maximum XOR of Two Numbers in an Array Medium 暴力求解会超时,须要使用异或的性质从最高位开始遍历。或者使用字典树。  
832. Combination Sum Medium 回溯法,遍历开始的地方不变,要跟踪target  
833. Combination Sum II Medium 经典的回溯法,这个题须要背会  
834. Combination Sum III Medium 也是经典回溯法,须要注意的是不重复,因此递归开始的地方要+1  
835. Combination Sum IV Medium 这个题须要使用动态规划求次数了,并不用回溯法。相似于爬楼梯  
836. Subsets Medium 使用回溯法进行搜索,须要注意的是要跟踪如今的位置,不能向回走  
837. Count Numbers with Unique Digits Medium 这个题是找规律+动态规划,要计算1位数字、2位数字…n位数字每位数字都不重复的状况有多少个  
838. Combinations Medium 这个组合问题须要跟踪如今的位置防止向后走,还要跟踪在剩余的数字里面取多少个  
839. Gray Code Medium 格雷码是把比本身小一位的格雷码正向一遍,而后以1开头+小一位的格雷码反向一遍,是个递归过程  
840. Subsets II Medium 这个求子集的时候要屏蔽相同的起始元素,在for循环里进行判断  
841. Letter Combinations of a Phone Number Medium 这个是个排列问题,先把当前位置的全部字符一次排好,而后再排列后面的字符串  
842. Palindrome Partitioning Medium 一样的回溯法,若是定义新函数没有太多难度,若是使用题目给定的函数进行递归须要额外判断终止条件  
843. Permutations II Medium 若是当前数字和前面的数字相等,而且前面的数字没有访问过,那么就不能搜索  
844. Restore IP Addresses Medium 回溯法,须要考虑ip的各类过滤条件,好比255和0开头的数字不合法  
845. Split Array into Fibonacci Sequence Medium 回溯,须要注意不能超过int,和addative numbers很像  
846. Permutation Sequence Medium 须要找规律,每一位等于剩余数字/剩余位数的全排列  
847. Word Search Medium 也是经典回溯法,须要保存是否已经访问过了某个位置,整体代码很常见  
848. Add and Search Word - Data structure design Medium Trie加上递归,自己不难,注意遍历全部子节点而后递归的操做  
849. N-Queens II Medium 回溯法去解决。使用一维的数组保存每行放在第多少列,进行有效棋盘判断的时候,须要判断同列或者斜率绝对值1  
850. Shopping Offers Medium 使用回溯法进行求解,套餐和单独点都进行尝试,这个题常常考!  
851. Binary Tree Preorder Traversal Medium 这个先序遍历迭代解法使用的是栈,有点违反直觉,建议仔细思考思考  
852. Asteroid Collision Medium 栈里保留着向右移动的小行星,若是当前的行星是向左的,向栈里面判断自身是否销毁  
853. Next Greater Element II Medium 单调递减栈,这个题难点在于循环数组,容易分析出把数组过两遍便可,须要求余  
854. Image Overlap Medium 正方形重合,使用字典保存两两之间向量的差,求最大的移动向量出现的次数  
855. Minimum Path Sum Medium 最小路径和,简单的动态规划,注意初始状态  
856. Unique Paths Medium 简单的动态规划,给周围包上一圈全0的数字,方便状态转移  
857. Unique Paths II Medium 也是动态规划,和上面的区别在于有障碍物,直接设置障碍物处的状态是0  
858. Rotate Image Medium 先上下翻转,再沿着主对角线翻转便可完成旋转操做  
859. Target Sum Medium 使用动态规划,dp[i][j]表示到第i个位置位置构成和为j的组合有多少种  
860. Unique Binary Search Trees Medium 记忆化递归,动态规划,卡特兰数等等,方法不少  
861. Decode String Medium 字符串解码,须要用到栈保存已经有的字符串和当前的数字,很经典的题目  
862. Group Anagrams Medium 对字符串进行排序,排序以后相等的字符串说明包含的字符相等  
863. Task Scheduler Medium 任务调度题目,很容易推出公式,可是切记整个时间最少知足任务个数  
864. Best Time to Buy and Sell Stock with Cooldown Medium 经典动态规划的题目,这个题须要定义两个数组:今天有股票的状况下的收益和今天没有股票状况下的收益,而后状态转移就简单了  
865. Best Time to Buy and Sell Stock with Transaction Fee Medium 动态规划,作法和上面很是相似,每次计算收益的时候须要减去手续费  
866. Flatten Binary Tree to Linked List Medium 若是用递归的话必定明白递归函数是把一个二叉树弄平造成链表,而后找到链表尾部,把链表拼接  
867. Longest Increasing Subsequence Medium LIS问题,是dp最经典的题目之一,须要从每一个位置向前遍历以更新dp  
868. Search a 2D Matrix II Medium 从矩阵的左下或者右上开始遍历,很简单  
869. Search a 2D Matrix Medium 在二维数组中进行搜索,可使用矩阵左下和右上角的查询方法,也能够直接遍历每个位置。  
870. Perfect Squares Medium 动态规划,一个数字能由多少个整数平方和构成等于知足更小数字+平方数的状态+1。  
871. Partition Equal Subset Sum Medium 把数字的累计和当作状态,当前的状态等于前面的数字累积和-当前数值的状态。  
872. Contiguous Array Medium 求累积和,而后判断在这个位置前面,这个累计和是否是出现过  
873. Merge Intervals Medium 使用start和end两个变量表示区间,当区间再也不重叠的时候把上面区间放入结果中,重置start和end  
874. Course Schedule Medium 拓扑排序,每次弹出入度为0的节点,并把以他为入度的全部节点的入度-1  
875. Construct Binary Tree from Preorder and Inorder Traversal Medium 前序遍历的首节点就是根节点,在中序中的位置坐标是左子树,右边是右子树  
876. Lowest Common Ancestor of a Binary Tree Medium 这个递归调用须要注意若是查找到任何一个节点都算是找到了最低公共祖先  
877. Word Break Medium 动态规划,每一个位置的状态由前面的某个状态+一个条件获得,搜索是两重循环  
878. Minimum Size Subarray Sum Medium 虫取法,找到最小长度的知足区间  
879. Sort List Medium 对于list的merge sort。  
880. Find First and Last Position of Element in Sorted Array Medium 本身实现lower_bound和upper_bound函数,使用二分  
881. Search in Rotated Sorted Array Medium 对二分的进一步理解:判断下一步查找的范围到底在mid左边仍是右边  
882. Maximal Square Medium 这个题使用dp,某位置的最大正方形边长等于左边、上边、左上边三个位置最小的边长+1  
883. Jump Game Medium 贪心算法,保存每一步都选择跳的最远的地方,若是这个位置不能到达直接返回false.  
884. Find the Duplicate Number Medium 寻找重复的数字,至关于链表中的环,也可使用二分查找  
885. Linked List Cycle II Medium 找出链表环的入口,可使用双指针,也可使用set保存已经遍历过的路径  
886. Add Two Numbers Medium 两个链表的加法,只要有一个链表不空或者进位存在就添加新的节点  
887. Next Permutation Medium 找到后面的第一个不降序数字,与第一个比它大的位置进行交换,而后把后面部分翻转便可  
888. Word Search Medium 标准的回溯法,须要向周围进行搜索,同时保存已经遍历了的位置再也不访问  
889. Coin Change Medium 动态规划,定义dp数组是可以成的amount的最少硬币数,遍历硬币更新每一个amount  
890. Maximum Product Subarray Medium 求连续数组最大积,须要保存每一个位置的最大、最小积,每一个位置都去维护这两个变量  
891. Longest Palindromic Substring Medium 字符串的简单动态规划,也能够直接暴力求解  
892. Validate Binary Search Tree Medium 递归函数中维护每一个节点的取值上下限便可。或者有序的中序遍历是个BST  
893. Longest Substring Without Repeating Characters Medium 虫取法+set找到每一个不含重复元素的子串,保存最长子串  
894. Implement Rand10() Using Rand7() Medium 须要先构造出rand40,而后mod10便可获得rand10.  
895. Integer Break Medium 任意>=2的整数均可以拆解成2x+3y,当y尽量大的时候target = 2x+3y的结果最大  
896. Redundant Connection Medium 并查集的题目,这种题目是个模板,应该背会DSU的代码  
897. Integer to Roman Medium 整数变成罗马数字,把整数进行拆解便可,在拆解的过程当中拼接每一个数字对应的字符  
898. Kth Smallest Element in a BST Medium 递归解法须要使用全局变量保存已经遍历了多少个了,到达k个时直接中止并返回便可。  
899. Bulb Switcher II Medium 智力题,被踩了不少次,没仔细作  
900. Reordered Power of 2 Medium 思路要灵活一点,直接统计数字出现的次数是否相等便可,没必要真的从新排序  
901. Shuffle an Array Medium Fisher–Yates 洗牌算法:依次遍历列表中的每一位,并将这一位与其后面的随机一位交换顺序。  
902. Add Two Numbers II Medium 使用额外空间保存两个列表的值元素,而后再模拟加法  
903. Minimum Area Rectangle Medium 对角线肯定长方形,判断另一条对角线上的两个点是否是存在便可  
904. Different Ways to Add Parentheses Medium 这是个递归求解的题目,若是遇到一个运算符就把左右两部分分别求出值,而后再作操做。左右部分分别求值求至关于给左右部分分别加上了括号  
905. Design Circular Deque Medium 设计deque,最简单的方法是使用双向链表  
906. Random Pick Index Medium 使用蓄水池抽样,每一个数字被选择的几率是1/cnt,遍历结束便可  
907. Linked List Random Node Medium 和上题一致,蓄水池抽样  
908. RLE Iterator Medium 一个循环,判断当前位置和剩下的数字n之间的关系,看是否向后走便可  
909. Total Hamming Distance Medium 统计int的32位中有多少个数字该位是一、多少个数字该位是0,结果是二者相乘  
910. Split Linked List in Parts Medium 求出每一段的长度,而后定一个函数切链表便可  
911. Hand of Straights Medium 使用map保存每一个数字的次数,而后向后遍历W-1个数字,判断是否都存在便可  
912. Copy List with Random Pointer Medium 遍历两遍,第一遍构造的节点放到字典里,第二遍遍历再链接起来  
399. Evaluate Division Medium 带权有向图的搜索问题  
636. Exclusive Time of Functions Medium 计算机函数的调度问题,使用栈解决  
646. Maximum Length of Pair Chain Medium 这个就是最多能看多少个电视节目的问题,使用的是贪心法,策略是优先选择结束时间早的项目  
328. Odd Even Linked List Medium 先分别构建偶数位置的链表和奇数位置的链表,把对应位置的结果放到对应位置以后,再拼接便可  
638. Shopping Offers Medium DFS进行搜索,尝试每种套餐方案  
318. Maximum Product of Word Lengths Medium 直接O(N^2)遍历便可  
173. Binary Search Tree Iterator Medium 把每一个节点的左孩子放到栈中,遍历栈中节点的时候须要把其右孩子的全部左孩子放到栈中  
337. House Robber III Medium 递归查找每一个节点可不能够用的状况下,最优结果是多少。可不能够用是由父亲节点用没用过决定的,因此递归函数有个变量保存父亲节点的状态。  
343. Integer Break Medium 须要证实把一个数字拆成尽量多的3和尽量少的4的和的时候,总乘积最大  
875. Koko Eating Bananas Medium 这个是一个变相的二分查找,须要根据当前的值判断查找后的移动  
901. Online Stock Span Medium 须要使用一个单调递减栈保存每一个数字的前面出现了多少小于等于该数字的数,后来的数字须要吞掉栈中比本身小的数字
相关文章
相关标签/搜索