Leetcode
Bug 挖掘机
技术成长路上没有捷径,欢迎关注我
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Leetcode 349,350】两个数组的交集,两个数组的交集II,超长数组求交集,有序数组求交集
两个数组的交集(Leetcode 349)方法一 两个集合python版本class Solution: def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]: set1 = set(nums1) set2 = set(nums2) return self.set_intersection(set1, set2) def set_inte.原创 2020-12-18 19:27:06 · 410 阅读 · 1 评论 -
【Leetcode 88】合并两个有序数组
解法一:合并后排序最朴素的解法就是将两个数组合并之后再排序。该算法只需要一行(Java是2行),时间复杂度较差,为O((n + m)\log(n + m))O((n+m)log(n+m))。这是由于这种方法没有利用两个数组本身已经有序这一点。java版本class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { System.arraycopy(nums2, 0, nums1, m, n); .原创 2020-12-13 22:21:28 · 440 阅读 · 0 评论 -
【Leetcode】为什么刷题要模1000000007
大数阶乘,大数的排列组合等,一般都要求将输出结果对1000000007取模 为什么总是1000000007呢1000000007是一个质数int32位的最大值为2147483647,所以对于int32位来说1000000007足够大int64位的最大值为2^63-1,对于1000000007来说它的平方不会在int64中溢出所以在大数相乘的时候,因为(a∗b)%c=((a%c)∗(b%c))%c,所以相乘时两边都对1000000007取模,再保存在int64里面不会溢出 。...原创 2020-12-10 11:19:43 · 1369 阅读 · 0 评论 -
【Leetcode 】括号字符串的最长有效长度
括号字符串的最长有效长度## # @param str string字符串 the string# @return int整型#class Solution: def maxVaildLength(self , str ): # write code here dp=[0] * len(str) for i in range(1,len(str)): if str[i]==")": p原创 2020-12-09 22:36:22 · 318 阅读 · 0 评论 -
【Leetcode 322】零钱兑换
思路确定状态,建立状态转移方程,建立DP表格,详情见下方扩展资料解法1:动态规划,DP表格(Python版本)float('inf') 表示正无穷class Solution: def coinChange(self, coins: List[int], amount: int) -> int: if amount < 0: return -1 if amount ==0: return 0 dp = [float('i...原创 2020-10-04 15:03:03 · 312 阅读 · 0 评论 -
【Leetcode 1143】最长公共子序列
最长公共子序列(Longest Common Subsequence,简称 LCS)是一道非常经典的面试题目,因为它的解法是典型的二维动态规划,大部分比较困难的字符串问题都和这个问题一个套路,比如说编辑距离。而且,这个算法稍加改造就可以用于解决其他问题,所以说 LCS 算法是值得掌握的。题目就是让我们求两个字符串的 LCS 长度:输入: str1 = “abcde”, str2 = “ace”输出: 3解释: 最长公共子序列是 “ace”,它的长度是 3肯定有读者会问,为啥这个问题就是动态..原创 2020-10-03 14:27:57 · 370 阅读 · 0 评论 -
【Leetcode 5】 最长回文子串
解法1 动态规划class Solution: def longestPalindrome(self, s: str) -> str: n=len(s) maxstr="" dp=[ [False]*n for _ in range(n)] 注意python创建二维数组的方法 for l in range(n): for i in range(n): j.原创 2020-09-22 13:39:01 · 195 阅读 · 0 评论 -
【Leetcode 240】 搜索二维矩阵||
分治法。左下角的元素是这一行中最小的元素,同时又是这一列中最大的元素。比较左下角元素和目标:若左下角元素等于目标,则找到若左下角元素大于目标,则目标不可能存在于当前矩阵的最后一行,问题规模可以减小为在去掉最后一行的子矩阵中寻找目标若左下角元素小于目标,则目标不可能存在于当前矩阵的第一列,问题规模可以减小为在去掉第一列的子矩阵中寻找目标若最后矩阵减小为空,则说明不存在class Solution: def searchMatrix(self, matrix, target): .原创 2020-09-22 13:14:15 · 204 阅读 · 0 评论 -
【Leetcode 141】环形链表
环形链表题目原创 2020-09-22 13:01:42 · 247 阅读 · 0 评论 -
【Leetcode 232】用栈实现队列
https://leetcode-cn.com/problems/implement-queue-using-stacks/solution/yong-zhan-shi-xian-dui-lie-by-leetcode/原创 2020-09-08 23:36:20 · 269 阅读 · 0 评论 -
【Leetcode169/剑指offer39】数组中出现次数超过一半的数字
解法如下:针对于第3种摩尔投票法原创 2020-08-23 21:03:36 · 179 阅读 · 0 评论 -
【Leetcode 704】二分查找,判断一个有序数组中一个数字出现的次数
首先是二分查找原创 2020-07-28 23:08:19 · 706 阅读 · 0 评论 -
【Leetcode 662】二叉树最大宽度
给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空。每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度。解法一:宽度优先搜索java版本class Solution { public int widthOfBinaryTree(TreeNode root) { Queue<AnnotatedNode原创 2020-07-26 23:24:49 · 367 阅读 · 0 评论 -
【Leetcode 9】回文数
题解class Solution { public boolean isPalindrome(int x) { // 特殊情况: // 如上所述,当 x < 0 时,x 不是回文数。 // 同样地,如果数字的最后一位是 0,为了使该数字为回文, // 则其第一位数字也应该是 0 // 只有 0 满足这一属性 if (x < 0 || (x % 10 == 0 && .原创 2020-07-26 23:02:42 · 437 阅读 · 0 评论 -
【leetcode 206】反转链表
方法一:采用迭代/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode reverseList(ListNode head) { ListNode pre=null; .原创 2020-07-22 11:02:17 · 250 阅读 · 1 评论 -
【Leetcode 344】反转字符串
class Solution {public: void reverseString(vector<char>& s) { if (s.size()>0) { vector<char>::iterator p; vector<char>::iterator q...原创 2019-11-29 20:56:11 · 227 阅读 · 0 评论 -
【Leetcode 70】爬楼梯
在这里插入代码片参考链接https://leetcode-cn.com/problems/climbing-stairs/solution/solution-python3-by-bu-zhi-dao-gan-sha/原创 2019-11-29 20:55:56 · 173 阅读 · 0 评论 -
【Leetcode 136】 只出现一次的数字
class Solution(object): def singleNumber(self, nums): """ :type nums: List[int] :rtype: int """ no_duplicate_list = [] for i in nums: ...原创 2019-11-29 20:55:29 · 165 阅读 · 0 评论 -
【Leetcode 121】买卖股票的最佳时机
方法一:采用动态规划class Solution(object): def maxProfit(self, prices): """ :type prices: List[int] :rtype: int """ if (len(prices)<=1): return 0 ...原创 2019-11-29 20:55:13 · 165 阅读 · 0 评论 -
【Leetcode 73】矩阵置零
参考链接https://leetcode-cn.com/problems/set-matrix-zeroes/solution/ju-zhen-zhi-ling-by-leetcode/原创 2019-11-29 20:54:45 · 178 阅读 · 0 评论 -
【Leetcode 78】子集
参考链接https://leetcode-cn.com/problems/subsets/solution/hui-su-suan-fa-by-powcai-5/注意以下用法res=res = res + [[i] + num for num in res]原创 2019-11-29 20:54:32 · 145 阅读 · 0 评论 -
【Leetcode 75】颜色分类
解题思路:三指针参考链接https://leetcode-cn.com/problems/sort-colors/solution/yan-se-fen-lei-by-leetcode/原创 2019-11-29 20:54:14 · 159 阅读 · 0 评论 -
【Leetcode 94】二叉树的中序遍历
题目描述解题思路:使用颜色标记法解题代码class Solution: def inorderTraversal(self, root: TreeNode) -> List[int]: WHITE, GRAY = 0, 1 res = [] stack = [(WHITE, root)] while stack:...原创 2019-11-29 20:52:59 · 204 阅读 · 0 评论 -
【Leetcode 118】杨辉三角
题目描述题解class Solution: def generate(self, num_rows): triangle = [] for row_num in range(num_rows): # The first and last row elements are always 1. row =...原创 2019-11-29 20:53:15 · 180 阅读 · 0 评论 -
【Leetcode 62】不同路径
题目描述思路一:排列组合当m=3和n=2时,总步数为3步(向下1步,向右2步)3个步数,3个空格,向右的2步排列组合即可,剩下的就是向下的步数def uniquePaths(self, m: int, n: int) -> int: return int(math.factorial(m + n - 2) / math.factorial(m - 1) / math.fa...原创 2019-11-29 20:57:51 · 200 阅读 · 0 评论 -
【Leetcode 20】有效的括号(附JAVA Deque 和LinkedList用法)
方法一:利用栈,python版本class Solution(object): def isValid(self, s): """ :type s: str :rtype: bool """ # The stack to keep track of opening brackets. s...原创 2019-11-29 21:00:38 · 348 阅读 · 0 评论 -
【Leetcode 19】删除链表的倒数第N个节点
public ListNode removeNthFromEnd(ListNode head, int n) { ListNode dummy = new ListNode(0); dummy.next = head; int length = 0; ListNode first = head; while (first != null) { ...原创 2019-11-29 21:00:26 · 273 阅读 · 0 评论 -
【Leetcode 17】电话号码的字母组合
题目描述方法一 :class Solution: def letterCombinations(self, digits): """ :type digits: str :rtype: List[str] """ phone = {'2': ['a', 'b', 'c'], ...原创 2019-11-29 21:00:46 · 176 阅读 · 0 评论 -
【Leetcode 15】三数之和
题目描述方法一:排序+双指针class Solution: def threeSum(self, nums: [int]) -> [[int]]: nums.sort() res, k = [], 0 for k in range(len(nums) - 2): if nums[k] > 0: bre...原创 2019-11-29 21:01:02 · 168 阅读 · 0 评论 -
【Leetcode 14】最长公共前缀
题目描述public String longestCommonPrefix(String[] strs) { if (strs.length == 0) return ""; String prefix = strs[0]; for (int i = 1; i < strs.length; i++) while (strs[i].indexOf(pref...原创 2019-11-29 21:00:52 · 176 阅读 · 1 评论 -
【Leetcode 13】罗马数字转整数
方法一:python解法class Solution: def romanToInt(self, s: str) -> int: d = {'I':1, 'IV':3, 'V':5, 'IX':8, 'X':10, 'XL':30, 'L':50, 'XC':80, 'C':100, 'CD':300, 'D':500, 'CM':800, 'M':1000}...原创 2019-11-29 21:01:10 · 190 阅读 · 0 评论 -
【Leetcode 8】字符串转换整数 (atoi)
实现字符串转为整数函数说明,参数p字符串的第一个非空格字符存在,当这个非空字符是数字或者正负号,开始执行,知道检测到字符为非数字字符,(其中包括'\0')时结束,返回一个int型整数,否则返回0下面是函数实现:int my_atoi(char *p){ int number = 0; if(p == NULL) { cout<<"字符串为空"...原创 2019-09-04 14:07:18 · 286 阅读 · 0 评论 -
【Leetcode 7】 整数反转
题目描述最大整数的个位数计算方法如下:所以-2的31次方的个位是8,2的31次方-1的个位是7解题思路类似于判断回文数class Solution {public: int reverse(int x) { int rev = 0; while (x != 0) { int pop = x % 10; ...原创 2019-11-29 21:01:16 · 160 阅读 · 0 评论 -
【Leetcode 3】无重复字符的最长子串
题目描述方法一:暴力法,会超时,java原创 2019-11-29 21:01:39 · 273 阅读 · 1 评论 -
【Leetcode 2】两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> ...原创 2019-11-29 21:01:24 · 206 阅读 · 0 评论 -
【Leetcode 21】合并两个有序链表
题目描述原创 2019-11-29 21:00:23 · 192 阅读 · 0 评论 -
【Leetcode 22】括号生成
class Solution(object): def generateParenthesis(self, n): def generate(A = []): if len(A) == 2*n: if valid(A): ans.append("".join(A)) ...原创 2019-11-29 21:00:15 · 163 阅读 · 0 评论 -
【Leetcode 56】合并区间
题目描述方法一先排序,通过后一个区间的左坐标值与前一个区间的右坐标值进行比较,便可以确定是否有重合class Solution: def merge(self, intervals: list) -> list: # 先把intervals按照第一个值进行排序 intervals.sort() n = len(intervals)...原创 2019-11-29 20:58:41 · 161 阅读 · 0 评论 -
【Leetcode 55】跳跃游戏
题目描述方法一bool canJump(vector<int>& nums) { int k = 0; for (int i = 0; i < nums.size(); i++) { if (i > k) return false; k = max(k, i + nums[i]); #k为当前能向前跳的最大距离...原创 2019-11-29 20:57:44 · 165 阅读 · 0 评论 -
【Leetcode 53】最大子序和
题目描述方法一:采用动态规划class Solution { public int maxSubArray(int[] nums) { int ans = nums[0]; int sum = 0; for(int num: nums) { if(sum > 0) { sum ...原创 2019-11-29 20:58:52 · 172 阅读 · 1 评论
分享