leetcode打卡
每日一题,力扣打卡
轩辕袭智
这个作者很懒,什么都没留下…
展开
-
997. 找到小镇的法官
class Solution: def findJudge(self, N: int, trust: List[List[int]]) -> int: l1 = [] l2 = [] for i in range(len(trust)): l1.append(trust[i][0]) l2.append(trust[i][1]) for i in range(1, N+1):原创 2020-08-04 20:34:58 · 110 阅读 · 0 评论 -
875. 爱吃香蕉的珂珂
class Solution: def minEatingSpeed(self, piles: List[int], H: int) -> int: left = 1 right = max(piles) while left < right: mid = (left + right) // 2 if self.__calculate_sum(piles, mid) > H: .原创 2020-08-04 20:31:17 · 153 阅读 · 0 评论 -
33. 搜索旋转排序数组
class Solution: def search(self, nums: List[int], target: int) -> int: self.idx = -1 self.divide(nums, target, 0, len(nums) - 1) return self.idx def divide(self, nums, target, left, right): if left > right原创 2020-08-04 20:29:42 · 93 阅读 · 0 评论 -
34. 在排序数组中查找元素的第一个和最后一个位置
class Solution: def searchRange(self, nums: List[int], target: int) -> List[int]: self.max = -inf self.min = inf self.divide(nums, target, 0, len(nums) - 1) if self.max == -inf or self.max == inf: self.max原创 2020-08-04 20:29:10 · 90 阅读 · 0 评论 -
199. 二叉树的右视图
# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def rightSideView(self, root: TreeNode) -> List[int]: res = []原创 2020-08-04 20:28:37 · 69 阅读 · 0 评论 -
114. 二叉树展开为链表
# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def flatten(self, root: TreeNode) -> None原创 2020-08-04 20:28:03 · 73 阅读 · 0 评论 -
35. 搜索插入位置
class Solution: def searchInsert(self, nums: List[int], target: int) -> int: self.idx = 0 self.divide(nums, target, 0, len(nums) - 1) return self.idx def divide(self, nums, target, left, right): if left >原创 2020-08-04 20:26:52 · 81 阅读 · 0 评论 -
236. 二叉树的最近公共祖先
# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeN原创 2020-08-04 20:25:17 · 100 阅读 · 0 评论 -
113. 路径总和 II
# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def pathSum(self, root: TreeNode, sum: int) -> List[List[int]]:原创 2020-08-04 20:24:12 · 72 阅读 · 0 评论 -
22. 括号生成
class Solution: def generateParenthesis(self, n: int) -> List[str]: self.res = [] self.backtrace(n, 0, 0, '') return self.res def backtrace(self, n, left, right, item): if right == n and left == n:原创 2020-08-04 20:23:08 · 70 阅读 · 0 评论 -
40. 组合总和 II
class Solution: def combinationSum2(self, candidates, target: int): self.res = [] item = [] i = 0 candidates.sort() check = [0 for i in range(len(candidates))] self.backtrace(candidates,target, item, i, c原创 2020-08-03 07:01:27 · 77 阅读 · 0 评论 -
51. N皇后
import copyclass Solution: def solveNQueens(self, n: int): res = [] squre = [[0 for i in range(n)] for j in range(n)]#皇后的攻击范围 sit = [['.' for i in range(n)] for j in range(n)] #皇后的位置 self.backtrace(0, n, sit, squre, res原创 2020-08-03 07:00:51 · 99 阅读 · 0 评论 -
315. 计算右侧小于当前元素的个数
class Solution: def countSmaller(self, nums: List[int]) -> List[int]: counts = [0]*len(nums)#结果数组 index = [i for i in range(len(nums))]#索引数组 def merge_sort(arr,low,high): mid = (low + high) // 2 if hig原创 2020-08-03 07:00:05 · 73 阅读 · 0 评论 -
70. 爬楼梯
public class Solution { public int climbStairs(int n) { if (n == 1) { return 1; } int[] dp = new int[n + 1]; dp[1] = 1; dp[2] = 2; for (int i = 3; i <= n; i++) { dp[i] = dp[i -原创 2020-08-03 06:59:20 · 86 阅读 · 0 评论 -
35. 搜索插入位置
class Solution: def searchInsert(self, nums: List[int], target: int) -> int: left = 0 right = len(nums) - 1 self.idx = 0 self.divide(nums, left, right,target) return self.idx def divide(self, nums, le原创 2020-08-03 06:58:36 · 76 阅读 · 0 评论 -
34. 在排序数组中查找元素的第一个和最后一个位置
class Solution: def searchRange(self, nums: List[int], target: int) -> List[int]: self.small = len(nums) - 1 self.big = 0 self.find = False left = 0 right = len(nums) - 1 self.divide(nums, target, lef原创 2020-08-03 06:57:58 · 81 阅读 · 0 评论 -
33. 搜索旋转排序数组
class Solution: def search(self, nums: List[int], target: int) -> int: left = 0 right = len(nums) - 1 self.idx = -1 self.divide(nums, left, right, target) return self.idx def divide(self, nums, left,原创 2020-08-03 06:57:17 · 67 阅读 · 0 评论 -
449. 序列化和反序列化二叉搜索树
import sysclass Codec: def serialize(self, root: TreeNode) -> str: """Encodes a tree to a single string. """ if not root: return '' self.res = [] self.preoder(root) return '#'.join(self.r原创 2020-08-03 06:56:48 · 100 阅读 · 0 评论 -
409. 最长回文串
class Solution: def longestPalindrome(self, s: str) -> int: if not s: return 0 dic = {} for i in s: if i in dic: dic[i] += 1 else: dic[i] = 1 countA原创 2020-08-03 06:55:57 · 75 阅读 · 0 评论 -
290. 单词规律
class Solution: def wordPattern(self, pattern: str, str: str) -> bool: str_list = str.split(' ') patt_str = { } i = 0 for s in pattern: if s in patt_str.keys(): print(s , str_l原创 2020-08-03 06:54:22 · 70 阅读 · 0 评论 -
49. 字母异位词分组
class Solution: def groupAnagrams(self, strs: List[str]) -> List[List[str]]: word = {} for str in strs: key = ''.join(sorted(str)) if key in word.keys(): word[key].append(str) else:原创 2020-08-02 21:41:04 · 93 阅读 · 0 评论 -
3. 无重复字符的最长子串
class Solution: def lengthOfLongestSubstring(self, s: str) -> int: res = '' front, back = 0, 0 maxlen = 0 while front < len(s) and back < len(s): if s[front] not in res:原创 2020-08-02 21:40:29 · 98 阅读 · 0 评论 -
187. 重复的DNA序列
class Solution: def findRepeatedDnaSequences(self, s: str) -> List[str]: begin = 0 end = 9 tmp = set() res = set() for end in range(end, len(s)): #print(s) new = s[begin:end + 1]原创 2020-08-02 21:39:42 · 94 阅读 · 0 评论 -
200. 岛屿数量
class Solution: def numIslands(self, grid: List[List[str]]) -> int: def dfs(nr, nc, grid): grid[nr][nc] = '0' for x,y in [(nr - 1, nc),(nr + 1, nc),(nr, nc + 1),(nr, nc - 1)]: if 0 <= x < len(gri原创 2020-08-02 21:38:50 · 109 阅读 · 0 评论 -
206. 反转链表
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = None#这里分成两个函数来写递归,其实只要一个也可以class Solution: def reverseList(self, head: ListNode) -> ListNode: self.head = None原创 2020-08-02 21:37:59 · 117 阅读 · 0 评论 -
279. 完全平方数
char * addBinary(char * a, char * b){ /* 新建返回字符串空间 取a、b长 循环从最低端相加 长度不够的补0 */ int lena = strlen(a); int lenb = strlen(b); int addlen = lena > lenb?lena+2:lenb+2; int i; char tempa; char tempb; int addtemp; char* addret =(char*)malloc(addle原创 2020-08-02 21:34:49 · 87 阅读 · 0 评论 -
67. 二进制求和
char * addBinary(char * a, char * b){ int lena=strlen(a); int lenb=strlen(b); int lenth=lena>lenb?lena+2:lenb+2; //考虑进位,位数可能会多一位,就lenth申请长一点。 char* res=(char*)malloc(lenth*(sizeof(char))); memset(res,'\0',lenth); //memset来初始化为'\0原创 2020-08-02 21:33:51 · 127 阅读 · 0 评论 -
237. 删除链表中的节点
https://leetcode-cn.com/problems/delete-node-in-a-linked-list/# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def deleteNode(self, node): ""原创 2020-08-02 21:31:47 · 88 阅读 · 0 评论