代码
同濟伴讀書僮
梦想总在凌云意,意气风发似少年
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Leetcode——每日一题T43.字符串相乘
class Solution: def str_2_num(self,s): return ord(s)-ord('0') def multiply(self, num1: str, num2: str) -> str: a = num1[::-1] b = num2[::-1] result = 0 for i, n1 in enumerate(a): temp_num = 0原创 2020-05-13 16:04:57 · 293 阅读 · 0 评论 -
Leetcode——每日一题T14. 最长公共前缀(zip函数法)
法一:正向法(增加字符串)class Solution:def longestCommonPrefix(self, strs: List[str]) -> str: if strs ==[]: return '' result = '' a = strs[0] for temp in strs: if len(temp) < len(a): a = temp for i in range(len(原创 2020-05-13 10:53:25 · 237 阅读 · 0 评论 -
Leetcode——每日一题T13.整数转罗马数字(迭代)
法一:迭代class Solution: def romanToInt(self, s: str) -> int: dict = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000} result = 0 for i in range(len(s)-1): if dict[s[i]] >= dict[s[i+1]]: r原创 2020-05-13 09:27:41 · 172 阅读 · 0 评论 -
LeetCode每日一题——T22. 括号生成(中):回溯算法——通用解法
回溯算法采用回溯算法进行求解。其基本思想为:沿一条路往前走,走到头后,判断是否符合要求,然后返回上一个岔路口,换条路继续走,走到头继续判断是否符合要求,并返回上一个岔路口,如何该岔路口其他岔路也走过了,则再往上返回上个岔路口,如此往复,直到返回出发点。例如本题,每个岔路就是在 字符串 S 中继续放 “(”还是放 “)”,结束条件是字符串长度是否等于 2 * n。假如 n = 3,则求解时,先生...原创 2019-07-21 21:11:29 · 244 阅读 · 0 评论 -
LeetCode每日一题——T49. 字母异位词分组(中):字典、collections.defaultdict(list)用法
采用字典进行求解,将字母异位词的各个字母分开(用sorted()函数),然后组成元组作为字典的键,组合成的字符串作为键值,最后输出键值即可。class Solution: def groupAnagrams(self, strs: List[str]) -> List[List[str]]: res = collections.defaultdict(list) ...原创 2019-07-25 22:44:06 · 254 阅读 · 0 评论 -
LeetCode每日一题——T8. 字符串转换整数 (atoi) (中):正则表达式
class Solution: def myAtoi(self, str: str) -> int: return max(min(int(*re.findall('^[\+\-]?\d+', str.lstrip())), 2**31 - 1), -2**31)max(min(a, b), c):设定上下限*:解包:findall 函数返回所有...原创 2019-08-13 22:17:13 · 280 阅读 · 1 评论 -
LeetCode每日一题T10. 正则表达式匹配(难)——(回溯)
class Solution(object): def isMatch(self, s: str, p: str) -> bool: if not p: return not s first_match = bool(s) and p[0] in {s[0], '.'} # 匹配第一个...原创 2019-08-24 15:17:25 · 184 阅读 · 0 评论 -
LeetCode每日一题——T6. Z 字形变换(中)——数组用法
从题目描述中可知,没有将 " "输出,因此可以将数组定义为含有 numRows 个字符串的数组,每个字符串为规则内的一行元素。因此在填入字符时,只需要考虑行变化,即将元素放入数组中哪个字符串后面。可以发现,行变化是递增或递减 1 的,当行变化到顶部或底部时,改变行变化方式。class Solution: def convert(self, s: str, numRows: int) -&...原创 2019-08-24 16:09:34 · 222 阅读 · 0 评论 -
LeetCode每日一题——T9. 回文数(易):字符串切片
class Solution: def isPalindrome(self, x: int) -> bool: l = str(x) if l[::] == l[::-1]: return True else: return False原创 2019-08-12 19:58:22 · 175 阅读 · 0 评论 -
LeetCode每日一题——T31. 下一个排列(中):倒序遍历数组
class Solution: def nextPermutation(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ n = len(nums) - 1 for k...原创 2019-08-12 20:43:30 · 198 阅读 · 0 评论 -
Leetcode每日一题——T32. 最长有效括号(难)——栈
法一:栈class Solution: def longestValidParentheses(self, s: str) -> int: if not s: return 0 res = 0 stack = [-1] for i in range(len(s)): if...原创 2019-09-07 15:57:33 · 215 阅读 · 0 评论 -
leetcode每日一题——T15. 三数之和(中):字典 / 双指针 & 排序
法一:(字典 + 指针 + 排序)class Solution: def threeSum(self, nums: List[int]) -> List[List[int]]: _dict = {} # 将数组中不同元素分别设置为字典的键,其对应的值设为其出现个数 for i in range(len(nums)): ...原创 2019-07-17 14:35:11 · 149 阅读 · 0 评论 -
LeetCode每日一题——T19. 删除链表的倒数第N个节点(中):链表,双指针 / 列表 / 双循环
法一:采用两次循环(效果一般)第一次循环记录链表长度 counter,第二次循环用来删除第 (counter - n + 1) 个节点。class Solution: def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode: if not head: return count =...原创 2019-07-19 16:07:39 · 135 阅读 · 0 评论 -
LeetCode每日一题——T21. 合并两个有序链表(易):链表,递归 / 迭代
法一:递归class Solution: def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: if l1 is None: return l2 elif l2 is None: return l1 elif l...原创 2019-07-19 14:48:09 · 220 阅读 · 0 评论 -
LeetCode每日一题——T2. 两数相加(中):链表
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = None...原创 2019-06-25 19:58:17 · 225 阅读 · 0 评论 -
LeetCode每日一题——T5. 最长回文子串(中):中心扩散法、未完待续
法一、中心扩散法:以字符串某元素(奇数扩散中心,对应子串长度为奇数)或某两相同元素中间(偶数扩散中心,对应子串长度为偶数)为中心,分别向两端扩散,如果两端元素相同,则继续扩散,不相同则退出,保留当前子串;更换中心元素,直至找到最长回文子串。class Solution: def longestPalindrome(self, s: str) -> str: s_le...原创 2019-07-01 16:14:51 · 619 阅读 · 0 评论 -
LeetCode每日一题——T3. 无重复字符的最长子串(中):滑动窗口
采用了滑动窗口的思想:class Solution: def lengthOfLongestSubstring(self, s: str) -> int: _dict = set() counter = 0 start = 0 counter = 0 temp = 0 for i in ...原创 2019-06-26 16:22:47 · 252 阅读 · 0 评论 -
LeetCode每日一题——T7. 整数反转(易):反转字符串
法一:用原数除10取余的方法;注意:python属于向下取余,即 5 / 2 = 2,而 (-5) / 2 = -3。因此,需要先将原数取绝对值再计算。class Solution: def reverse(self, x: int) -> int: x_abs = abs(x) num = 0 err = (2 ** 31) - ...原创 2019-06-26 21:36:19 · 325 阅读 · 0 评论 -
leetcode每日一题——T70. 爬楼梯(易):斐波那契公式
题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶示例 2: 输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶...原创 2019-07-03 23:21:09 · 316 阅读 · 0 评论 -
LeetCode每日一题——T4. 寻找两个有序数组的中位数(难):递归、二分索引
代码及思路来源:https://blog.youkuaiyun.com/LoveHYZH/article/details/92760709博主在分类时的表格十分好,让人一目了然,借鉴展示如下(侵删):class Solution: def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:...转载 2019-06-28 21:39:48 · 219 阅读 · 0 评论 -
LeetCode每日一题——T20. 有效的括号(易):栈、哈希表
此题用到栈先进后出的特点进行求解,求解思路可参考下列链接,十分巧妙:官方求解思路class Solution: def isValid(self, s: str) -> bool: _dict = {'{':'}', '[':']', '(':')'} # 创建hash表,表示左右括号的对应关系 stack = [] for...原创 2019-06-30 00:23:38 · 518 阅读 · 0 评论 -
LeetCode每日一题——T11. 盛最多水的容器(中),双指针方法
采用**双指针方法**进行求解,每次移动较矮的的那个指针,直到遍历所有数组元素。class Solution: def maxArea(self, height: List[int]) -> int: i, j = 0, len(height) - 1 cur_area = 0 max_area = max(cur_area, ((...原创 2019-07-18 20:22:07 · 188 阅读 · 0 评论 -
LeetCode每日一题——T17. 电话号码的字母组合(中),递归
很明显,这是一个涉及 递归 的问题。可以将题目理解为将每个数字“转译”成字母,问一串数字有多少种“转译”结果。则每“转译”一个数字,相当于求剩余数字的“转译”结果,然后将结果拼接到当前数字对应的三或四种字母后面。这正是递归的思想。采用递归进行求解:class Solution: def letterCombinations(self, digits: str) -> List[...原创 2019-07-18 21:11:50 · 160 阅读 · 0 评论 -
LeetCode每日一题——T1. 两数之和(易):三种解法:暴力循环、两遍哈希表、一遍哈希表
leetcode每日一题第一题——两数之和,采用了三种解法:一种是for循环,时间复杂度较高;第二种是两遍哈希表;第三中是一遍哈希表。实际测试中,第一种反而时间更少。很奇特原创 2019-06-25 19:18:02 · 566 阅读 · 0 评论
分享