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 須要使用一個單調遞減棧保存每一個數字的前面出現了多少小於等於該數字的數,後來的數字須要吞掉棧中比本身小的數字
相關文章
相關標籤/搜索