
LeetCode
cornorghost
没有什么是永恒的
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
10.正则表达式匹配
LeetCode可以分为以下情况class Solution {public: bool isMatch(string s, string p) { int s_lenth=s.size(), p_lenth=p.size(); vector<vector<int>> dp(s_lenth+1, vector<int>(p_lenth+1)); dp[0][0]=1; if(p_lenth) dp[原创 2020-06-29 08:30:40 · 196 阅读 · 0 评论 -
62.不同路径
#include<vector>using namespace std;// class Solution { //深度遍历法// public:// int uniquePaths(int m, int n) {// vector<vector<int>> r(m, vector<int>(n,1));// r[m-1][n-1]=-1;// dfs(r, 0, 0);//原创 2020-06-17 09:20:33 · 202 阅读 · 0 评论 -
16. 最接近的三数之和
每日leetcode(35)16. 最接近的三数之和给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = ...原创 2019-12-12 21:51:05 · 156 阅读 · 0 评论 -
5279. 整数的各位积和之差
每日leetcode(35)5279. 整数的各位积和之差给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。示例 1:输入:n = 234输出:15解释:各位数之积 = 2 * 3 * 4 = 24各位数之和 = 2 + 3 + 4 = 9结果 = 24 - 9 = 15示例 2:输入:n = 4421输出:21解释:各位数之积 = 4 ...原创 2019-12-08 22:13:53 · 346 阅读 · 0 评论 -
15. 三数之和
每日leetcode(34)15. 三数之和给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, ...原创 2019-12-08 22:10:49 · 219 阅读 · 0 评论 -
11. 盛最多水的容器
每日leetcode(33)11. 盛最多水的容器给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为图中垂直线代表输入数组 [1,8,6,2,5,4,8,3...原创 2019-10-25 22:41:20 · 129 阅读 · 0 评论 -
6. Z 字形变换
每日leetcode(32)Z字形变换将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实...原创 2019-10-16 00:53:21 · 293 阅读 · 0 评论 -
107. 二叉树的层次遍历 II
每日leetcode(25)今天的题目是层次遍历,只不过反转过来而已class Solution: def levelOrderBottom(self, root: TreeNode) -> List[List[int]]: if not root: return [] #s1用于存放上一层的值,s2存放下一层的值,s4存...原创 2019-07-29 22:54:27 · 100 阅读 · 0 评论 -
104. 二叉树的最大深度
每日leetcode(24)二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回它的最大深度 3 。这道题递归到最后叶节点,为空则返回0Definition for a b...原创 2019-07-19 16:38:40 · 131 阅读 · 0 评论 -
101. 对称二叉树
每日leetcode(23)对称二叉树给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1/ 2 2/ \ / 3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:1/ 2 2\ 3 3这道题我想不到输入两个node来递归,在这里学习了,看了评论区的代码才...原创 2019-07-16 01:00:08 · 90 阅读 · 0 评论 -
100. 相同的树
每日leetcode(22)相同的树给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1/ \ / 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1/ ...原创 2019-07-16 00:31:02 · 111 阅读 · 0 评论 -
542. 01 矩阵
每日leetcode(29)01 矩阵,今天的题目如下给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1:输入:0 0 00 1 00 0 0输出:0 0 00 1 00 0 0示例 2:输入:0 0 00 1 01 1 1输出:0 0 00 1 01 2 1我的想法是这样的,对每个元素进行上...原创 2019-08-01 00:14:44 · 361 阅读 · 0 评论 -
88. 合并两个有序数组
每日leetcode(21)合并两个有序数组给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3...原创 2019-07-14 23:17:56 · 104 阅读 · 0 评论 -
108. 将有序数组转换为二叉搜索树
每日leetcode(26)今天的题目是有序数组转平衡二叉树二叉搜索树的特点就是节点的左儿子所有点的值都小于该节点,其右儿子所有点的值都大于该节点。既然数组是有序的,先取数组的中间节点为根,然后把数组分为左右两个字数组,依次递归就可以了下面代码是评论区的,我对平衡二叉树的构建有点模糊了class Solution: def sortedArrayToBST(self, nums)...原创 2019-07-29 23:50:42 · 96 阅读 · 0 评论 -
3. 无重复字符的最长子串
每日leetcode(27)无重复字符的最长子串,题目如下:‘’’给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pww...原创 2019-07-30 23:09:53 · 124 阅读 · 0 评论 -
2. 两数相加
每日leetcode(28)两数相加,题目如下:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 ...原创 2019-07-31 01:03:09 · 161 阅读 · 0 评论 -
717. 1比特与2比特字符
每日leetcode(30)1比特与2比特字符,题目如下:有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。示例 1:输入:bits = [1, 0, 0]输出: True解释:唯一的编码方式是一个两比特字符和一个一比特字符。所以最后一个...原创 2019-08-21 22:38:04 · 353 阅读 · 0 评论 -
4. 寻找两个有序数组的中位数
每日leetcode(31)4. 寻找两个有序数组的中位数今天的题目如下:这道题想了我很久,一开始的思路是归并排序,但是这个算法最好也是O(nlogn),所以这种想法不符合要求。最后看了官方的解释才看明白,下面根据我理解到的再解释一次:原理:求一个平均数,就是把一个有序数组平均分成两等分,如果是奇数,中位数就是中间那个,如果是偶数,那中位数就是中间两数平均值。那么,对于两个数组的求中位...原创 2019-09-13 12:26:31 · 449 阅读 · 0 评论 -
5. 最长回文子串
每日leetcode(31)5. 最长回文子串题目如下:没说时间复杂度,那先试试暴力算法,因为暴力也好写,但事实是还是过不了测试案例,还是贴下代码,反正就几行,如下:class Solution: def longestPalindrome(self, s: str) -> str: if len(s)==1: return s ...原创 2019-09-14 21:44:07 · 135 阅读 · 0 评论 -
20.判断括号有效性
20.有效的括号,判断括号匹配是否正确这个用栈,当遇到左括号时入栈,当遇到右括号时,先判断栈是否空,为空则返回False,如果不空再判断顶端元素是否和右括号匹配,不匹配则返回False,匹配则继续遍历,遍历完成,判断栈是否为空,代码如下class Solution(): def isValid(self,s): l=[]#列表模拟栈 d={')':'(...原创 2019-05-26 00:00:08 · 756 阅读 · 0 评论 -
83. 删除排序链表中的重复元素
每日leetcode(21)删除排序链表中的重复元素给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3这个简单,就直接放代码吧,就两两对比# Definition for singly-linke...原创 2019-07-14 22:53:20 · 113 阅读 · 0 评论 -
70. 爬楼梯
每日leetcode(20)爬楼梯,题目如下假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。3. 1 阶 + 1 ...原创 2019-07-14 21:42:45 · 100 阅读 · 0 评论 -
29.两数相除
每日leetcode(15)29.两数相除今天的题目如下讲道理,第一眼看到想到的方法就是用减法,但是试了一下,只要除数小点,被除数大点,时间就超出限制了,那么有没有快点的方法呢,看到评论里都说位运算,然后我去看了一下,其中有个算法是这样的向左移一位相当于乘2,向右移一位相当于除以2首先被除数循环除以2^n,当大于等于除数时,被除数-除数*2的n次方,继续判断,直到循环结束。同时要注意溢...原创 2019-05-30 23:02:33 · 177 阅读 · 0 评论 -
26.删除排序数组中的重复项
每日leetcode(10)26.删除排序数组中的重复项今天的题如下注意,这是个有序的数组,坑爹,我以为无序的,我说我的提交怎么一直超出时间限制。这是用传统的思想做的,就是判断和下一个是否相同,相同就删除该元素,总长度减1。class Solution: def removeDuplicates(self,nums): i=0 l=len(num...原创 2019-05-27 23:51:55 · 146 阅读 · 0 评论 -
13.罗马数字转整数
13.罗马数字转整数,如下图我用的python这道题,一开始的想法是建立一个字典,映射1个符号的罗马符号和特殊符号的罗马符号,然后按两位进行判断,如下class Solution(): def romanToInt(self,s): sum=0 i=0 d={} d=dict(zip(['I','V','X','L',...原创 2019-05-22 22:16:28 · 118 阅读 · 0 评论 -
21.合并两个有序链表
每日leetcode(9)21.合并两个有序链表。今天的题目如下图这是一个有关链表的插入问题,学过数据结构的应该都记得,可以新建一个链表,对比两个链表当前值,小的则加载新链表后,对应链表指针向前移动,否则新链表后添加另一个链表的结点,对应链表指针向前移动,当一个链表到头时,直接把另一个链表剩下的添加到新链表后面,代码如下class ListNode: def __init__(se...原创 2019-05-26 22:43:23 · 111 阅读 · 0 评论 -
9.判断是否为回文数
9.回文判断,如下图转化为字符串的方法比较简单就不用了,下面说个不用类型转化的方法class Solution(): def isPalindrome(self,x): if x<0: return False a=x b=0 while(a!=0): b*=10 ...原创 2019-05-21 23:15:37 · 226 阅读 · 0 评论 -
375.猜数字大小2
今天的题目如下如果是你,你会怎么做,这道题有点难,一开始我想的是二分法,一直往右边算,结果是不行的,这还不是最少的,题目求的是至少。这就涉及到一个极小极大化的思想。那么什么是极小极大化算法呢,简单说是一种找出失败的最大可能性中的最小值的算法(即最小化对手的最大得益),下面是一个python的解决方法和测试,先放上来,有空再细看class Solution(): def getMo...原创 2019-05-16 00:57:37 · 251 阅读 · 0 评论 -
7.整数反转
今天的题目是7.整数反转,如图一开始我是踩了很多坑的,比如列表不能转整数,判断是否带符号,只有列表可以reverse()和remove(),输出的是整数,而且输出的数也要在规定范围内后来我改了很久,得到了下面的代码,还算不错class Solution(): def rever(self,x): if x<-2**31|x>2**31-1: ...原创 2019-05-21 01:03:27 · 125 阅读 · 0 评论 -
374.猜数字大小1
今天的题目如下:不好意思我一开始理解错误,新手还比较陌生,这个题直接就是二分法这是我的答案原创 2019-05-15 00:43:23 · 135 阅读 · 0 评论 -
14.最长公共前缀
14.最长公共前缀,如下图这道题一开始没什么特别好的办法,直接暴力循环吧,先判断前两个,得到公共前缀s,如果是’'则返回,否则循环调用函数findu(),函数里找到最短的字符长度,循环判断每个元素是否相同,代码如下class Solution(): def longestCommonPrefix(self,strs): if not strs:return '' ...原创 2019-05-24 00:56:24 · 118 阅读 · 0 评论 -
27.移除元素
每日leetcde(11)27.移除元素今天的题很简单,看到直接暴力判断吧,如下class Solution: def removeElement(self,nums,val): while val in nums: nums.remove(val) return len(nums)但是效率自己看吧有点慢,还是用昨...原创 2019-05-28 22:36:15 · 170 阅读 · 0 评论 -
69. x 的平方根
每日leetcode(19)x 的平方根,题目就是求一个平方根实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。解决的方法是使用...原创 2019-07-14 21:15:02 · 114 阅读 · 0 评论 -
67. 二进制求和
每日leetcode(18)二进制求和,题目如下给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”这个我选择用最简单的方法,自己转换的方法我在这里不说了class Soluti...原创 2019-07-04 20:13:03 · 110 阅读 · 0 评论 -
66. 加一
每日leetcode(17)加一,题目如下给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解...原创 2019-07-04 19:38:00 · 123 阅读 · 0 评论 -
58.最后一个单词的长度
每日leetcode(16)最近在弄小程序,所以刷题这事耽搁了好长一段时间,现在做的差不多了,之后应该会写一个教程,今天继续写题目今天的题目如下题目不难,直接用split(),但是要注意一个坑加入只有一个字符加空格,如’a ',这种情况split()会有两个元素,一个是a,一个是空格,所以为了防止这种情况,先用strip()去掉首尾的空格,如下class Solution: def...原创 2019-06-15 22:44:50 · 106 阅读 · 0 评论 -
38.报数
每日leetcode(15)38.报数今天的题目估计是体育老师出的,看半天不知道说什么多写几个例子会死啊,算了,这道题的意思是列举上个字符串每个元素的个数,比如上一个为11213,则有2个1,1个2,1个1,1个3,写为21121113,是这个意思。然后这个的话用递归会好点,每次递归,然后判断元素是否相同,相同则总数加1,不同则将个数和当前字符添加到新的字符串。 if n=...原创 2019-06-03 22:50:18 · 256 阅读 · 0 评论 -
36.有效的数独
每日leetcode(14)36.有效的数独今天的题目如下这个需要判断三个东西,行的,列的,子数独的,子数独的index=int((row/3)*3)+int(columns/3)然后需要三个列表,每个列表元素分别是记录当前行,列,子数独的当前数出现的次数,直接上代码class Solutuin: def isValidSudoku(self,board): ...原创 2019-05-29 21:29:30 · 203 阅读 · 0 评论 -
35.搜索插入位置
每日leetcode(13)35.搜索插入位置今天的题目如下很简单,如果在则调用index()函数,不在的话,这里用两种方法,一种顺序判断法,一种二分判断法,顺序最好达到44ms,二分最好40msclass Solution: def searchInsert(self,nums,target): try: return nums.inde...原创 2019-05-29 20:48:03 · 165 阅读 · 0 评论 -
28.实现strStr()函数
每日leetcode(12)28.实现strStr()函数今天的题目如下边角简单,直接用python的find函数class Solution: def strStr(self,haystack,needle): if not needle: return 0 return haystack.find(needle)效率...原创 2019-05-28 22:53:28 · 160 阅读 · 0 评论