leetcode
ailinyingai
DevOps 搬砖人 干饭人
展开
-
赏金猎人
#include<stdio.h>#include<iostream>#include<queue>#include<vector>// #include<bits/stdc++.h>using namespace std;struct people{ int attack,money,id,res;};people a[100010];bool cmp(people a,people b){ return.原创 2021-04-15 23:29:18 · 179 阅读 · 0 评论 -
leetcode-53-cpp
class Solution {public: struct Status { int lSum, rSum, mSum, iSum; }; Status pushUp(Status l, Status r) { int iSum = l.iSum + r.iSum; int lSum = max(l.lSum, l.iSum + r.lSum); int rSum = max(r.rSum, r.iSum + l.翻译 2021-04-09 09:41:57 · 103 阅读 · 0 评论 -
leetcode-126
class Solution: def findLadders(self, beginWord: str, endWord: str, wordList: List[str]) -> List[List[str]]: if endWord not in wordList: return [] words=set(wordList) layer={} layer[beginWord]=[[beginWord]原创 2021-03-23 16:35:30 · 102 阅读 · 0 评论 -
lintcode 骑士拨号器
class Solution(object): def knightDialer(self, N): MOD = 10**9 + 7 moves = [[4,6],[6,8],[7,9],[4,8],[3,9,0],[], [1,7,0],[2,6],[1,3],[2,4]] dp = [1] * 10 for hops in range(N-1): dp2 = [0]原创 2021-03-23 16:20:27 · 100 阅读 · 0 评论 -
加权编辑距离 python leetcode-72 升级版本
class Solution: def __init__(self): self.delCost = 1 self.insertCost = 2 self.changeCost = 3 def minDistance(self, word1: str, word2: str) -> int: n = len(word1) m = len(word2) # 有一个字符串为空串翻译 2021-03-15 10:20:53 · 413 阅读 · 0 评论 -
5704
class Solution {public: int maximumScore(vector<int>& nums, int k) { int n = nums.size(), ans = 0; for (int i = nums[k], l = k, r = k; i >= 1; --i) { while (l > 0 && nums[l - 1] >= i) --l;翻译 2021-03-14 12:04:41 · 212 阅读 · 0 评论 -
leetcode-003
class Solution: def lengthOfLongestSubstring(self, s: str) -> int: hashmap = {} left = maxLen = 0 for i, c in enumerate(s): if c in hashmap: left = max(left, hashmap[c] + 1) hashmap[c]原创 2021-03-13 18:58:28 · 72 阅读 · 0 评论 -
编辑距离72
class Solution: def minDistance(self, word1: str, word2: str) -> int: @lru_cache def dp(i, j): if i * j == 0: return i + j return dp(i - 1, j - 1) if word1[i - 1] == word2[j - 1] else min(dp(i - 1, j), dp(i, j原创 2021-03-12 14:09:14 · 64 阅读 · 0 评论 -
leetcode-518
class Solution {public: int change(int amount, vector<int>& coins) { int dim1 = coins.size(); int dim2 = amount+1; int dp[dim2]; // dp[0]=1; for(int i=0;i<dim2;i++) dp[i]=(i==0)?1:(0); for原创 2021-03-10 23:44:01 · 81 阅读 · 0 评论 -
901单调栈
class StockSpanner(object): def __init__(self): self.stack = [] def next(self, price): """ :type price: int :rtype: int """ res = 1 while self.stack and self.stack[-1][0] <= price:原创 2021-03-05 18:12:02 · 74 阅读 · 0 评论 -
直觉的概率问题
假设有一个家庭,有两个孩子,现在告诉你其中有一个男孩,请问另一个也是男孩的概率是多少?很多人,包括我在内,不假思索地回答:1/2 啊,因为另一个孩子要么是男孩,要么是女孩,而且概率相等呀。但是实际上,答案是 1/3。上述思想为什么错误呢?因为没有正确计算样本空间,导致原则一计算错误。有两个孩子,那么样本空间为 4,即哥哥妹妹,哥哥弟弟,姐姐妹妹,姐姐弟弟这四种情况。已知有一个男孩,那么排除姐姐妹妹这种情况,所以样本空间变成 3。另一个孩子也是男孩只有哥哥弟弟这 1 种情况,所以概率为 1/3。生日悖论翻译 2021-02-02 23:28:11 · 374 阅读 · 0 评论 -
leetcode 70 爬楼梯 斐波那契数列变种问题
# 直接递归解法,容易超时,python可以加个缓存装饰器,这样也算是将递归转换成迭代的形式了# 除了这种方式,还有增加步长来递归,变相的减少了重复计算# 还有一种方法,在递归的同时,用数组记忆之前得到的结果,也是减少重复计算import functoolsclass Solution: @functools.lru_cache(100) # 缓存装饰器 def climbStairs(self, n: int) -> int: if n < 3:翻译 2020-11-26 20:41:05 · 313 阅读 · 0 评论 -
leetcode 887
* 鸡蛋掉落,谷歌面试题, * 有 K 个鸡蛋,有 N 层楼,用最少的操作次数 F 检查出鸡蛋的质量。 * * 思路: * 本题应该逆向思维,若你有 K 个鸡蛋,你最多操作 F 次,求 N 最大值。 * * dp[k][f] = dp[k][f-1] + dp[k-1][f-1] + 1;//这里就当成当前这一层所能决定的层数为鸡蛋没摔的层数+鸡蛋摔了的层数+当前这一层 * 解释: * 0.dp[k][f]:如果你还剩 k 个蛋,且只能操作 f 次了,所能确定的楼层。 * 1.dp[k.原创 2020-08-17 09:29:49 · 400 阅读 · 1 评论 -
1487
class Solution:# py3 def getFolderNames(self, names: List[str]) -> List[str]: m = {} ans = [""]*len(names) for i in range(len(names)): if names[i] not in m: m[names[i]] = 1 ans[i] =原创 2020-06-22 22:10:58 · 232 阅读 · 0 评论 -
编辑距离
def minDistance(s1, s2) -> int: def dp(i, j): # base case if i == -1: return j + 1 if j == -1: return i + 1 if s1[i] == s2[j]: return dp(i - 1, j - 1) # 啥都不做 else: return min原创 2020-06-22 21:48:06 · 157 阅读 · 0 评论 -
fib
# -*- coding:utf-8 -*-class Solution: # 注意:这里不能用递归,会栈溢出 # 这里只能用动态规划 def Fibonacci(self, n): # write code here 0 1、1、2、3、5、8、13、21、34 #if n == 0: # return 0 ...原创 2020-03-06 15:01:41 · 152 阅读 · 0 评论 -
盛水容器 双指针
def get_max_volumn(nums): left_index, right_index = 0, len(nums) - 1 max_volumn = 0 while left_index < right_index: max_volumn = max(max_volumn, min(nums[left_index], nums[right...原创 2020-03-02 10:09:14 · 129 阅读 · 0 评论 -
剪绳子
class Solution: def cuttingRope(self, n: int) -> int: a,b,c = 0,1,1 for i in range(3,n+1): a,b,c = b,c,max(3*a,(i-3)*3,2*b,(i-2)*2,c,(i-1)) return c原创 2020-02-29 09:56:11 · 158 阅读 · 0 评论 -
最长不含重复字符串的子串
def lengthOfLongestSubstring(self, s): ans = start = 0 pos = {} # last index of element for end, c in enumerate(s): if c in pos: start = max(start, pos[c]+1) ...原创 2020-02-29 08:28:09 · 158 阅读 · 0 评论 -
1361
def validateBTN(self, n,left,right): root = set(range(n))-set(left+right) seen = [0]*n def dfs(i): if i==-1: return 0 if seen[i]: return -n seen[i]=1 return dfs(left[i])+dfs(right[i...原创 2020-02-26 17:08:22 · 225 阅读 · 0 评论 -
jump games V
def maxJumps(self,A,d): n=len(A) dp=[1]*n for a,i in sorted([a,i] for i,a in enumerate(A)): for di in [-1,1]: for j in range(i+di,i+d*di+di,di): if not (0<=j<n and a[j]<a[i]): bre...翻译 2020-02-18 16:43:47 · 151 阅读 · 0 评论 -
1107
#include<iostream>#include<cstring>#include<string>#include<vector>#include<map>#include<set>#include<stack>#include<queue>#include<cmath>...原创 2020-02-10 09:42:45 · 230 阅读 · 0 评论 -
0278
/* The isBadVersion API is defined in the parent class VersionControl. boolean isBadVersion(int version); */ public class Solution extends VersionControl { public int firstBadVersion(int n...原创 2020-02-03 18:00:52 · 192 阅读 · 0 评论 -
0056
class Solution: def merge(self, intervals: List[List[int]]) -> List[List[int]]: res = [] intervals.sort() for i in intervals: if not res or res[-1][1] < i...原创 2020-01-30 21:18:00 · 181 阅读 · 0 评论 -
1323
#version 1, 1 lineclass Solution: def maximum69Number (self, num: int) -> int: return str(num).replace('6','9',1) #version 2, from others work in leetcodeclass Solution: def max...原创 2020-01-23 14:52:27 · 177 阅读 · 1 评论 -
1317
def run(n): def no_zero(num): return False if '0' in str(num) else True for m in range(n): if no_zero(m) and no_zero(n-m): return [m, n-m]原创 2020-01-23 10:29:56 · 265 阅读 · 0 评论 -
le1et3co1de3
题目的意思就是说给的这个nums是一个被压缩的列表的表示,奇数位表示频率,偶数位(跟在前面奇数位后面)表示值。水题无疑,这道题可以用生成表达式一行搞定。不用生成表达式可以用+或者extend连接数组。#version 1class Solution: def decompressRLElist(self, nums: List[int]) -> List[int]: ...原创 2020-01-23 10:25:13 · 196 阅读 · 0 评论 -
0283 移动0
i = 0 for x in range(len(nums)): if(nums[i]==0): del nums[i] nums.append(0) else: i+=1原创 2020-01-22 17:06:32 · 110 阅读 · 0 评论 -
质数筛选法
def countPrimes(self, n: int) -> int: if n<=2:return 0 n_primes=[1]*n n_primes[0],n_primes[1],i=0,0,2 while i*i<n: if n_primes[i]==1: ...原创 2020-01-22 16:33:51 · 394 阅读 · 0 评论 -
0191数一
class Solution {public: int hammingWeight(uint32_t n) { int count = 0; while(n>0){ n&=n-1; count++; } return count; }};原创 2020-01-20 17:52:52 · 219 阅读 · 0 评论 -
0091解码方法
class Solution: def numDecodings(self,s:str) -> int: n = len(s) if (not s or s[0] == "0"): return 0 dp = [0]*(n+1) dp[0] = 1 dp[1] = 1 for i in range(1,n): if (s[i] == "0"): ...原创 2020-01-20 16:57:31 · 209 阅读 · 0 评论 -
0087
class Solution: def isScramble(self,s1:str,s2:str) -> bool: if s1 == s2: return True if sorted(s1) != sorted(s2): return False for i in range(1,len(s1)): if self.isScramble(s1[:i],s...原创 2020-01-20 14:24:00 · 351 阅读 · 0 评论 -
0438
class Solution: def findAnagrams(self,s:str,p:str): res = [] window = {} needs = {} for c in p: needs[c] = needs.get(c,0) + 1 length , limit = len(p) , len(s) left = right = 0 while ...原创 2020-01-20 09:51:39 · 169 阅读 · 0 评论 -
最长公共前缀
class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: '''找出字符串数组最长公共前缀 Args: strs: 传入待匹配的字符串数组 Returns: 返回字符串数组中存在的最长公...原创 2020-01-17 11:29:26 · 137 阅读 · 0 评论 -
有效的括号
class Solution: def isValid(self, s: str) -> bool: '''判断是否是有效的括号 Args: str: 包含括号的字符串 Returns: 返回判断的结果,满足条件: 1. 左括号必须用相同...原创 2020-01-16 14:02:38 · 239 阅读 · 0 评论 -
0424
class Solution: def characterReplacement(self,s:str,k:int) -> int: letter_num = {} l = 0 res = 0 for r in range(len(s)): letter_num[s[r]] = letter_num.get(s[r],0) + 1 max_letter = ma...原创 2020-01-15 15:44:01 · 162 阅读 · 0 评论 -
0011
1.init__init__方法可以简单的理解为类的构造方法2.del__del__方法是类中的析构方法,当对象消亡的时候(被解释器的垃圾回收的时候会执行这个方法)这个方法默认是不需要写的,不写的时候,默认是不做任何操作的。因为你不知道对象是在什么时候被垃圾回收掉,所以,除非你确实要在这里面做某些操作,不然不要自定义这个方法。3.call__call__方法在类的对象被执行的时候(obj...翻译 2020-01-13 16:51:09 · 141 阅读 · 0 评论 -
0437
func pathSum(root *TreeNode, sum int) int { vals := make([]int,1000) return pathSumDS(root,sum,0,vals)}func pathSumDS(root *TreeNode, sum int, depth int,vals []int) int { if root == nil...原创 2020-01-12 23:00:15 · 116 阅读 · 0 评论 -
0458可怜的小猪
public int poorPigs(int buckets, int minutesToDie, int minutesToTest){ //buckets为桶数,例子中是1000,minutesToDie是15,minutesToTest是60 int base=minutesToTest/minutesToDie+1; double temp...原创 2019-12-04 17:43:19 · 81 阅读 · 0 评论 -
0206
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* re...原创 2019-11-26 14:52:15 · 159 阅读 · 0 评论