LeetCode刷题整理
文章平均质量分 85
记录LeetCode刷题的思路及代码
hoohaa_
北京邮电大学研究生在读
研究方向:自然语言处理,对话系统
Github(欢迎star and follow~~):
https://github.com/pnnngchg
邮箱:1142715814@qq.com
博客:https://blog.csdn.net/pnnngchg
展开
-
LeetCode剑指offer----字符串
1.LeetCode—72. Edit Distance字符串的编辑距离将一个字符串转化为另一个字符串所需要的最少操作。二维动态规划问题。2.LeetCode—91. Decode Ways一个多位数可以划分成几种英文字母的组合。一维动态规划问题。当前位置的dp由前面一位或者两位决定,分情况讨论即可。3.93. Restore IP AddressesIP地址的划分方式。回溯法。注...原创 2019-03-22 23:04:01 · 302 阅读 · 0 评论 -
300. Longest Increasing Subsequence 最长递增序列
https://leetcode.com/problems/longest-increasing-subsequence/// class Solution {// //动态规划。在i位置上的dp值,应该是两者额较大值:1.原dp 2.比nums[i]小的nums[j]的j位置上的dp值加一// public int lengthOfLIS(int[] nums) {//...原创 2019-03-10 17:40:39 · 161 阅读 · 0 评论 -
打印1到最大的n位数
题目:输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。我们需要考虑用字符串或者数组来表示大数。用字符串表示数字的时候,最直观的方法就是字符串里每个字符都是‘0’到‘9’之间的某一个字符,用来表示数字中的一位。因为最大的是n位的,因此我们需要一个长度为n+1的字符串(字符串中最后一个是结束符号‘\0’。当实际数字不够n位的时候,在字符...原创 2019-03-10 15:34:06 · 432 阅读 · 0 评论 -
无序数组中找top K 个值
在不增加空间复杂度的情况下,用堆排序。维护一个大小为k的堆。如果是找最大的K个值,那么用大顶堆,否则用小顶堆。先从原数组中取k个值建立一个堆,然后每次从原数组中拿一个值与堆顶元素进行比较,看是否需要替换,如果替换了,就进行一次堆排序。这样到最后,这个堆中的元素就是top K。前K大,维护最小堆;前K小,维护最大堆1.初始化一个最小堆2.输入新数据,若大于堆顶则替换堆顶,调整堆为最小堆(从最...原创 2019-03-08 22:58:50 · 2522 阅读 · 0 评论 -
LeetCode---963. Minimum Area Rectangle II
LeetCode—963. Minimum Area Rectangle II一堆二维坐标点,找出其中能形成矩形的四个点,使得形成的矩形面积最小。https://leetcode.com/problems/minimum-area-rectangle-ii/1.如何找到四个点形成矩形。方法是利用矩形的性质:对角线长度相等,对角坐标的中点重合2.如何储存找到的四个点,数据结构的问题。将时间复...原创 2019-03-08 15:15:50 · 227 阅读 · 0 评论 -
LeetCode—450. Delete Node in a BST
LeetCode—450. Delete Node in a BST题目https://leetcode.com/problems/delete-node-in-a-bst/删除搜索二叉树中的一个节点,返回新的搜索二叉树,因为结果不唯一,任意返回一个即可。解析及代码/** * Definition for a binary tree node. * public class Tree...原创 2019-02-25 09:16:45 · 139 阅读 · 0 评论 -
LeetCode剑指offer刷题总结---回溯法2
上一篇写了使用回溯法解决的几道题,这几天又把其他的回溯法的题做了一下。在这里总结一下。由于题目较多,就单独沾代码了,开链接直接看。从题目要求上来说,主要分为三类:查找,这类题一般要我们找出所有满足条件的情况,返回一个集合。结果集合作为递归函数的一个参数进行传递。如51. N-Queens,131. Palindrome Partitioning,93. Restore IP Addresse...原创 2019-01-26 15:59:41 · 366 阅读 · 0 评论 -
LeetCode剑指offer刷题总结---回溯法
回溯法一般会结合dfs解决问题。先深搜到返回条件,然后回溯到上一层继续dfs。一般见过的回溯法的题都是矩阵形式给出的。另外这种类型的题很多都涉及元素是否被访问过的问题,所以一般的返回条件会有两个:1.访问位置超过边界 2.元素已经被访问过了。还有一个要注意的是,当dfs全部结束的时候也会返回(当然,毕竟是递归吗),有时候也会利用到这个返回,比如LeetCode 200剑指offer最后的两道题都...原创 2019-01-24 22:54:39 · 530 阅读 · 0 评论 -
LeetCode—96. Unique Binary Search Trees
LeetCode—96. Unique Binary Search Trees题目https://leetcode.com/problems/unique-binary-search-trees/一个有n个节点的二叉搜索树,有多少种不同的结构。思路及解法二叉搜索树:对于任意一个节点root,其左子树中的元素小于root,其右子树中的元素大于root。二叉搜索树的中序遍历是非递减的。解...原创 2018-10-18 15:09:00 · 145 阅读 · 0 评论 -
LeetCode—106. Construct Binary Tree from Inorder and Postorder Traversal
LeetCode—106. Construct Binary Tree from Inorder and Postorder Traversal题目https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/description/中序遍历和后序遍历确定二叉树。注意二叉树中不...原创 2018-10-17 20:44:38 · 166 阅读 · 0 评论 -
LeetCode—105. Construct Binary Tree from Preorder and Inorder Traversal
LeetCode—105. Construct Binary Tree from Preorder and Inorder Traversal题目根据前序遍历和中序遍历建立二叉树。注意二叉树中没有重复的数字。思路及解法根据前序遍历和中序遍历的特点,通过前序遍历列表确定根节点,在中序遍历的列表里找出根节点,左边就是左子树,右边就是右子树,中序遍历列表确定左子树和右子树的长度,实际在递归过程...原创 2018-10-17 20:08:36 · 186 阅读 · 0 评论 -
LeetCode—114. Flatten Binary Tree to Linked List
LeetCode—114. Flatten Binary Tree to Linked List题目https://leetcode.com/problems/flatten-binary-tree-to-linked-list/description/思路及方法前序遍历二叉树,存到列表里,在建立新书。代码/** * Definition for a binary tree nod...原创 2018-10-14 20:25:39 · 140 阅读 · 0 评论 -
LeetCode—110. Balanced Binary Tree
LeetCode—110. Balanced Binary Tree题目https://leetcode.com/problems/balanced-binary-tree/description/判断一棵二叉树是否是平衡二叉树。平衡二叉树指的是,两棵子树的任一节点的深度相差不超过1.思路及解法首先写一个函数用来得到每一个子树的深度,然后递归调用原函数,判断两棵子树的深度差是否超过1...原创 2018-10-13 14:04:49 · 113 阅读 · 0 评论 -
LeetCode—101. Symmetric Tree
LeetCode—101. Symmetric Tree题目https://leetcode.com/problems/symmetric-tree/description/判断一棵二叉树是否是镜像的。思路及解法同样,有递归的方法和非递归的方法。非递归使用一个双向对列实现。这里多说两句,虽然非递归的方法效率不是很高,在做树的题目的时候还是在递归和非递归的方法都在实现一遍,因为递归不容...原创 2018-10-12 17:29:28 · 130 阅读 · 0 评论 -
LeetCode—103. Binary Tree Zigzag Level Order Traversal
LeetCode—103. Binary Tree Zigzag Level Order Traversal题目https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/description/之字形层序遍历二叉树。思路及解法因为昨天刚做过层序遍历二叉树的题102. Binary Tree Level ...原创 2018-10-12 14:42:56 · 274 阅读 · 0 评论 -
LeetCode—107. Binary Tree Level Order Traversal II
LeetCode—107. Binary Tree Level Order Traversal II题目https://leetcode.com/problems/binary-tree-level-order-traversal-ii/description/层序遍历二叉树,返回的列表是反序。思路及解法这道题是102. Binary Tree Level Order Traversa...原创 2018-10-11 17:23:04 · 99 阅读 · 0 评论 -
LeetCode—102. Binary Tree Level Order Traversal
LeetCode—102. Binary Tree Level Order Traversal题目https://leetcode.com/problems/binary-tree-level-order-traversal/description/层序遍历二叉树。思路及解法使用一个对列存储每一层的节点,同时使用列表存储当前对列每一层节点的值,一层结束后,将节点从对列出列,没出一个节点...原创 2018-10-11 16:37:46 · 109 阅读 · 0 评论 -
LeetCode—145. Binary Tree Postorder Traversal
LeetCode—145. Binary Tree Postorder Traversal题目https://leetcode.com/problems/binary-tree-postorder-traversal/description/后序遍历二叉树。思路及解法1.递归2.非递归,栈迭代的稍微复杂一些 总体上和前面的解法是一样的 不过这边要先访问左右节点,同样还是以左节点...原创 2018-10-11 15:28:17 · 91 阅读 · 0 评论 -
LeetCode—94. Binary Tree Inorder Traversal
LeetCode—94. Binary Tree Inorder Traversal题目https://leetcode.com/problems/binary-tree-inorder-traversal/description/中序遍历二叉树。思路及解法写的时候还是不熟练,还要好好想想,所以不要不重视。。1.递归2.非递归,栈代码/** * Definition for ...原创 2018-10-09 17:36:19 · 110 阅读 · 0 评论 -
LeetCode—144. Binary Tree Preorder Traversal
LeetCode—144. Binary Tree Preorder Traversal题目https://leetcode.com/problems/binary-tree-preorder-traversal/description/前序遍历二叉树。思路及解法1.递归2.非递归,栈代码/** * Definition for a binary tree node. * p...原创 2018-10-09 14:09:17 · 173 阅读 · 0 评论 -
LeetCode—32. Longest Valid Parentheses
LeetCode—32. Longest Valid Parentheses题目https://leetcode.com/problems/longest-valid-parentheses/description/找出最长的合法括号组合子串。思路及解法这道题是20. Valid Parentheses的进阶。20题是用栈存储字符来完成的。这道题也会用的到栈,但是如果存储字符是不能完成任...原创 2018-10-08 16:16:57 · 172 阅读 · 0 评论 -
LeetCode—20. Valid Parentheses
LeetCode—20. Valid Parentheses题目https://leetcode.com/problems/valid-parentheses/description/判断括号是否合法有效。左括号必须由相同类别的右括号关闭。思路及解法因为第i个出现的左括号需要和第i个出现的右括号判断组合是否合法,如果只考虑将左括号存储起来,每遇到一个右括号就与相应的左括号组合判断,这就...原创 2018-10-07 15:06:43 · 285 阅读 · 0 评论 -
LeetCode—58. Length of Last Word
LeetCode—58. Length of Last Word题目https://leetcode.com/problems/length-of-last-word/description/找出句子字符串中最后一个单词的长度。思路及解法很简单的题。从后向前遍历就好了,到达第一个空格就break出来。需要注意的是整个句子字符串最后是可能有有空格的,所以首先需要进行判断。代码class...原创 2018-10-06 19:11:31 · 83 阅读 · 0 评论 -
LeetCode---38. Count and Say
LeetCode—38. Count and Say题目https://leetcode.com/problems/count-and-say/description/计数并发言。n=1,输出1;n=2,上次输出一个1,所以输出11;n=3,上次输出两个1,所以输出21;n=4,上次输出一个2和一个1,所以输出1211;以此类推要求给定n,1<=n<=30,输出n对应...原创 2018-10-06 10:31:46 · 136 阅读 · 0 评论 -
LeetCode---611. Valid Triangle Number
LeetCode—611. Valid Triangle Number题目https://leetcode.com/problems/valid-triangle-number/submissions/找出数组中可以组成三角形三边的组合数。思路及解法先进行排序。使用三个指针i,j,ki,j,ki,j,k指向三个数,判断前两个数和是否大于第三个数。这里第二个数是关键,当num[i]+nu...原创 2018-12-07 09:41:08 · 322 阅读 · 0 评论 -
LeetCode—114. Longest Common Prefix
LeetCode—114. Longest Common Prefix题目https://leetcode.com/problems/longest-common-prefix/description/寻找最长公共前缀。给出字符串数组,找出数组中字符串的最长公共前缀。思路及解法分为2步:1.找出数组中字符串的数量,最短的字符串长度2.两层循环,外层拿出最短字符串中的每一个字符x,内...原创 2018-10-05 22:35:53 · 74 阅读 · 0 评论 -
LeetCode—28. Implement strStr()
LeetCode—28. Implement strStr()题目https://leetcode.com/problems/implement-strstr/description/给出两个字符串,needle和haystack,判断haystack中的子串能否和needle匹配,如果能,返回haystack子串的第一个字符的索引,否则返回-1.思路及解法1.暴力解法自己先想了一个...原创 2018-10-05 17:04:35 · 96 阅读 · 0 评论 -
LeetCode—5. Longest Palindromic Substring
LeetCode—5. Longest Palindromic Substring题目https://leetcode.com/problems/longest-palindromic-substring/description/寻找最长回文子串。思路及解法在字符串中首先选择一个点,从这个点开始向两边扩展开去,不断比较两端的字符是不是相等。需要注意的是,回文子串的长度可奇可偶,所以一开...原创 2018-10-04 13:28:08 · 114 阅读 · 0 评论 -
LeetCode---3. Longest Substring Without Repeating Characters
LeetCode—3. Longest Substring Without Repeating Characters题目https://leetcode.com/problems/longest-substring-without-repeating-characters/description/找出一个字符串的最长不重复子串,注意是子串不是子序列。返回最长的长度。思路及解法第一种方法...原创 2018-10-03 22:52:34 · 137 阅读 · 0 评论 -
LeetCode—125. Valid Palindrome
LeetCode—125. Valid Palindrome题目https://leetcode.com/problems/valid-palindrome/description/判断字符串是不是回文。只考虑文字和数字,不考虑标点等。空字符认为是回文。思路及解法这道题思路和方法不难。只是会学到Java中字符串常用的接口,比如toLowerCase()转小写,isLetterOrDig...原创 2018-10-05 17:10:01 · 98 阅读 · 0 评论 -
LeetCode---25. Reverse Nodes in k-Group
LeetCode—25. Reverse Nodes in k-Group题目https://leetcode.com/problems/reverse-nodes-in-k-group/description/ 给定一个单链表,要求每次反转k个数。对于链表中剩余的数不足k个的情况,保留剩余的数不做改变。其中k小于等于链表的长度。 思路及解法这道题是参考了网上的解法。 这...原创 2018-09-05 18:10:23 · 132 阅读 · 0 评论 -
LeetCode---35. Search Insert Position
LeetCode—35. Search Insert Position题目https://leetcode.com/problems/search-insert-position/给出一个有序数组和一个target,将这个target有序的插入到数组中,返回插入的index。思路及解法这道题还是比较简单的,时间复杂度n的解法很容易。之所以放到博客上来,是因为看了一个二分查找的方法,降了...原创 2018-12-06 09:35:19 · 355 阅读 · 0 评论 -
LeetCode---160. Intersection of Two Linked Lists
LeetCode—160. Intersection of Two Linked Lists题目https://leetcode.com/problems/intersection-of-two-linked-lists/找到两个链表重合的节点并返回。思路及解法首先要审好题。这道题的意思是如果两个链表存在焦点的话,那么这个焦点后面的所有节点应该都是重合的,不会出现相交后又分叉的情况。知...原创 2018-12-05 22:43:45 · 165 阅读 · 0 评论 -
LeetCode---143. Reorder List
LeetCode—143. Reorder List题目https://leetcode.com/problems/reorder-list/description/ 将链表的后半部分反转,在间隔插入到前半部分的链表中。 思路及分析直接说方法步骤: 1.找到链表的中点的前驱节点pre 2.将中点开始的后半部分链表反转,方法是参考LeetCode—92. Revers...原创 2018-09-07 14:31:02 · 137 阅读 · 0 评论 -
LeetCode---142. Linked List Cycle II
LeetCode—142. Linked List Cycle II题目https://leetcode.com/problems/linked-list-cycle-ii/description/ 这道是141的follow up,不止是判断是不是有环链表了。还要判断环的入口在哪里。诶??怎么写到题目里了,应该写到分析里的,,无所谓了。题目就是判断链表是不是带环,如果带,返回入口节点。...原创 2018-09-06 17:48:09 · 129 阅读 · 0 评论 -
LeetCode---141. Linked List Cycle
LeetCode—141. Linked List Cycle题目https://leetcode.com/problems/linked-list-cycle/description/ 判断是否是有环链表。思路及解法若是非有环链表,则游走的指针一定可以走到null;若不是,需要设立两个指针,快慢指针,快指针比慢指针走的快,并且快指针的起始点比满指针往前,这样,在有环的情况下,快...原创 2018-09-06 15:52:54 · 98 阅读 · 0 评论 -
LeetCode---138. Copy List with Random Pointer
LeetCode—138. Copy List with Random Pointer题目https://leetcode.com/problems/copy-list-with-random-pointer/description/ 深拷贝一个链表。这个链表的节点有两个指针,其中有一个随机指针,随机指向某个节点。思考与分析第一次接触深拷贝相关的题目。查了一下资料,知道了深拷...原创 2018-09-06 15:00:03 · 137 阅读 · 0 评论 -
LeetCode---24. Swap Nodes in Pairs
LeetCode—24. Swap Nodes in Pairs题目https://leetcode.com/problems/swap-nodes-in-pairs/description/ 将链表中两两相邻的节点交换,返回头结点。思路及解法首先需要确定需要几个指针,head的前驱指针dummy,指向两个交换节点的指针left和right,另外还要有一个指针before...原创 2018-09-05 16:11:48 · 119 阅读 · 0 评论 -
LeetCode---19. Remove Nth Node From End of List
LeetCode—19. Remove Nth Node From End of List题目https://leetcode.com/problems/remove-nth-node-from-end-of-list/description/ 将链表中倒数第n个数删除,返回新的链表。n总是有效合理的。思路及分析比较简单的问题。首先我们遍历一遍链表得到链表的长度,然后找到要删...原创 2018-07-16 11:12:38 · 135 阅读 · 0 评论 -
LeetCode---61. Rotate List
LeetCode—61. Rotate List题目https://leetcode.com/problems/rotate-list/description/ 给出一个链表和非负数k,将链表从第k位反转。 思路及解法通过观察我们很容易发现,只要将链表从第k位后面的右子链表放到左子链表的前面就可以了,很简单。要注意的是,k的值可能比链表的长度要大,所以应该对k做取余操作。代...原创 2018-07-14 22:33:16 · 105 阅读 · 0 评论