leetcode
文章平均质量分 57
大地之灯
这个作者很懒,什么都没留下…
展开
-
力扣 链表习题合集(NO.141;NO.21;NO.203)
NO.141 环形链表题目链接方法一:遍历并存储节点到哈希表,如果出现重复节点,证明该链表有环# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def hasCycle(self, head: Optional[ListNode]) ->原创 2022-04-26 21:38:31 · 247 阅读 · 0 评论 -
力扣 NO.383 赎金信(哈希表:Counter()的使用)NO.242 有效字母异位词
题目(链接)方法一:哈希表:Counter()的使用import collectionsclass Solution: def canConstruct(self, ransomNote: str, magazine: str) -> bool: # magezine长度不够,直接return False if len(ransomNote)>len(magazine): return False # 如果完原创 2022-04-19 14:24:23 · 79 阅读 · 0 评论 -
力扣 NO.384 字符串中的第一个唯一字符(哈希表;Counter()的使用)
题目链接方法一:使用哈希表存储频数,Counter()方法import collectionsclass Solution: def firstUniqChar(self, s: str) -> int: frequency = collections.Counter(s) # 获取频数字典 for i,x in enumerate(s): if frequency[x] ==1: # 如果是不重复字符原创 2022-04-19 11:11:06 · 227 阅读 · 0 评论 -
力扣 NO.73 矩阵置零
题目(链接)方法一:两次遍历,一次遍历找出相应的行,列保存,第二次遍历将相应行列的数置零class Solution: def setZeroes(self, matrix: List[List[int]]) -> None: """ Do not return anything, modify matrix in-place instead. """ # 得到矩阵的行数,列数 row_nums = len原创 2022-04-19 01:10:22 · 243 阅读 · 0 评论 -
力扣 NO.36 有效的数独(哈希表)
题目链接解法一:三个哈希表存储对应位置数字的出现次数行,列,box的哈希表row_haxi = [[0] * 10 for _ in range(9)] # 取num = int(board[i][j]) 令 row_haxi[i][num]+=1column_haxi = [[0] * 10 for _ in range(9)] # 取num = int(board[i][j]) 令 column_haxi[j][num]+=1box_haxi = [[0] * 10 for _ in r原创 2022-04-19 00:32:59 · 189 阅读 · 0 评论 -
力扣 NO.118 杨辉三角形
题目:(链接)解法:第i行的第j个数=第i-1行的j-1个数 + 第i-1行的第j个数。注意下,左右边界都是1,就这么简单。class Solution: def generate(self, numRows: int) -> List[List[int]]: # 第i行的第j个数=第i-1行的j-1个数 + 第i-1行的第j个数。注意下,左右边界都是1,就这么简单。不需要扯一大堆数学公式。 mat = [[0] * i for i in range(1,原创 2022-04-18 14:20:45 · 257 阅读 · 0 评论 -
力扣 NO. 121 买股票的最佳时机(动态规划方法)
题目解法:(关联 力扣 NO.53 有关此题可查看我的相关总结贴)动态规划方法:dp[i]表第i天卖出的最大利润是多少状态转移方程:第i天卖出的最大利润 = max (第i-1天的最大利润 , 第i-1天的最大利润 + 第i天和第i-1天的价格差)dp[0] = 0dp[i] = max( dp[i-1] , dp[i-1] + ( prices[i] - prices[i-1]) )class Solution: def maxProfit(self, prices: List[in原创 2022-04-17 02:26:25 · 340 阅读 · 0 评论 -
力扣 NO.350 两个数组的交集 II (哈希表;counter)
题目(题目链接)方法一:哈希表我这里用了字典做哈希表,一般用list就可以了class Solution: def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]: haxi_dict = {x:0 for x in range(1001)} # 利用字典推导式创建哈希表 result = [] # 字典键对应的值为该数字的出现次数,遍历nums1并修改出原创 2022-04-14 20:40:37 · 271 阅读 · 0 评论 -
力扣 NO.88 合并两个有序数组
目录题目方法一:利用归并排序中,合并有序数组的思想方法二:直接数组合并 + sort()题目方法一:利用归并排序中,合并有序数组的思想class Solution: def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None: """ Do not return anything, modify nums1 in-place instead. "原创 2022-03-31 21:20:51 · 338 阅读 · 0 评论 -
编程题目+数据库题目总结(3)
目录编程题1.字典中保存了一些股票代码(键)及价格(值),用一行代码找出价格最高的股票,输出股票代码。(5分)2.字典中保存了一些股票代码(键)及价格(值),用一行代码对字典按股票价格从高到低进行排序,输出股票代码的列表。(5分)用pandas解决问题1,23.设计一个函数,生成指定长度的验证码,验证码由大小写英文字母和数字构成。(10分)4. 设计一个函数,统计字符串中英文字母和数字各自出现的次数以二元组形式返回。(10分)5. 设计一个函数,统计一个字符串中出现频率最高的字符及其出现次数,以二元组形式返原创 2022-03-07 19:50:11 · 1108 阅读 · 0 评论 -
力扣 NO.7整数反转 字符串倒置,取末尾数倒置两种方法
@[TOC]目录题目概述题目解析及代码分析:"""整数范围的具体值print(int(-2**31),# -2147483648 bin(-2**31),# -0b10000000000000000000000000000000 int(2**31-1),# 2147483647 bin(2**31-1)) # 0b1111111111111111111111111111111"""方法一:字符串倒置def reverse(x:int) ->原创 2021-12-23 17:59:56 · 2874 阅读 · 0 评论 -
力扣hot100 6 Z字型变换
目录题目介绍题目解析及代码题目介绍题目解析及代码class Solusion: def convert(self,s:str,numRows:int) -> str: if numRows < 2:return s res = ["" for _ in range(numRows)] """ flag 的灵活运用: 我们在之字型存储的过程中(numRows个数组) 需要进行转向 (0原创 2021-12-08 00:26:09 · 3149 阅读 · 0 评论 -
力扣hot100 5 最长回文子串
文章目录解法一:动态规划思路代码解法二:中心扩展算法 (待补充)题目链接解法一:动态规划思路代码class Solution: def longestPalindrome(self,s:str)->str: n = len(s) if n < 2: return s max_len = 1 begin = 0 # dp[i][j]表示s[i..j]是否是回文子串原创 2021-11-17 21:11:45 · 92 阅读 · 0 评论 -
力扣hot100 4*寻找两个正序数组的中位数(二分查找)待补充
目录题目介绍题解1(归并排序思想)解法二:题目介绍题解1(归并排序思想)思路:因为已经有序,所以只需要先合并两个数组,然后找出中位数即可,时间复杂度为O(M+N)class Solution: def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float: # 归并排序合并数组(已经有序所以直接归并) nums3 = [] idx1, idx原创 2021-07-05 17:41:15 · 81 阅读 · 0 评论 -
力扣hot100 3 无重复字符的最长子串的长度
目录题目介绍:题解1:(自己写的暴力解法:时间复杂度 O(N2)O(N^2)O(N2))题解2*:(官方解法:时间复杂度O(N)O(N)O(N))重点:关于使用 not in 的时间复杂度分析:题解三*:动态规划思想解(待补充)题目介绍:题解1:(自己写的暴力解法:时间复杂度 O(N2)O(N^2)O(N2))思路:建立临时列表,存储不重复的连续字符,作为移动窗口。判断下一项是否为重复项,不是的话,将不重复项加入到临时列表(扩大移动窗口);是的话,找到临时表中重复项的下标,根据下标 sign 重新原创 2021-06-23 08:34:20 · 142 阅读 · 1 评论 -
力扣hot100 2*.两数相加(链表;divmod())
目录题目介绍:解法一(普通解法):解法二(简化了一丢丢):补充:题目介绍:解法一(普通解法):class Solution: def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: head = point = ListNode(0) # 创建头结点和指针point(初始指向head) carry = 0 # 设置进位 while l1 or l2:原创 2021-06-21 23:13:53 · 76 阅读 · 0 评论 -
力扣hot100 1.两数之和
目录1. 两数之和1. 两数之和题目描述:题目解析方法一:暴力枚举class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: for i in range(len(nums)): for j in range(i+1,len(nums)): if nums[i]+nums[j] == target:原创 2021-06-18 15:56:19 · 83 阅读 · 0 评论 -
每日一题 力扣LCP 29 乐队站位(二维矩阵:找规律)
题目描述:参照的题解题解:class Solution: def orchestraLayout(self, num: int, xPos: int, yPos: int) -> int: layer = min(xPos,yPos,num-yPos-1,num-xPos-1) # 外层层数 = 距离上边,左边,右边,下边的层数的最小值 t = 4 * layer * (num - layer) % 9 # 外层所有格子的数量 ,对9 取余为外层结束计原创 2021-06-13 17:46:38 · 159 阅读 · 0 评论 -
python 每日一题 :力扣 169 多数元素
众数问题题目描述:考虑执行效率的解法([之前整理过看这里](https://blog.csdn.net/qq_33489955/article/details/116174983?spm=1001.2014.3001.5501))调包解法利用scipy下stats模块利用bincount,argmax() ,但此方法可能会报错,np.bincount()不接受负值题目描述:考虑执行效率的解法(之前整理过看这里)# counter 是计数器,计算出现数字的权重# counter 为0时,说明前边没有原创 2021-06-07 23:56:16 · 243 阅读 · 5 评论 -
python 动态规划总结及相关力扣题目
动态规划总结1. 分治法和动态规划的区别2. 什么问题适合使用动态规划解决2. 动态规划通常会包含两个环节:1. 递归:求解子问题。2. 记忆化:把已经计算出的结果保存起来。3. 题目应用:输入两个字符串,求最长公共子序列(LCS,Longest Common Subsequence)的长度。大部分内容和例子均来自 骆昊老师知乎文章 : 透过面试说算法(4) - 动态规划1. 分治法和动态规划的区别动态规划和之前文章中讲到的分治法的区别。分治法要解决的子问题是相互独立的,可以分别进行求解;而动态规划要原创 2021-06-02 20:30:47 · 404 阅读 · 1 评论 -
Python 生成器
原文来自生成器创建生成器三种取值方法send()函数创建生成器只要把一个列表生成式的[]改成(),就创建了一个generatorL = [x * x for x in range(10)]print(L) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]G = (x * x for x in range(10))print(G) # <generator object <genexpr> at 0x000002758AD54120>此外转载 2021-06-01 15:35:29 · 337 阅读 · 0 评论 -
每日一题 第二次考试 数据库题目,7.17数据库面试题目补充
MySQL数据库根据下面提供的四张二维表的结构,完成后面的题目。用户表:`tb_user`+----------+-------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+----------+-------------+------+-----+---------+----------------+| use原创 2021-05-21 09:37:15 · 250 阅读 · 1 评论 -
python 排序算法总结:选择排序,冒泡算法,归并排序(后续补充其他算法)
python 排序算法总结写代码的终极原则:高内聚,低耦合(high cohesion, low coupling)。函数应该做到无副作用(调用函数后不影响原来的参数)简单排序算法(低级排序算法) ---> O(N**2)1. 简单选择排序 - 每次从剩下的元素中选择最小元素放到排好序的列表中2. 简单插入排序 - 一次取元素,但是要将当前元素插入到合适的位置以确保顺序3. 冒泡排序 - 两两比较,前面大于后面就交换位置高级排序算法 ---> O(N * logN)1. 快速排序 - 选择枢轴对原创 2021-05-18 00:41:16 · 207 阅读 · 0 评论 -
python 每日一题 54&48 螺旋矩阵&旋转矩阵; 566 重塑矩阵
螺旋矩阵&旋转矩阵54 螺旋矩阵方法一:利用numpy库来做(问题:类型问题,pycharm通过,力扣不识别)尚未解决该问题方法二:数组来做48 旋转矩阵总结:逆时针旋转:先转置再翻转;顺时针旋转:先翻转再转置来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/spiral-matrix54 螺旋矩阵给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例 1:输入:matrix = [[1,原创 2021-05-04 18:43:45 · 465 阅读 · 3 评论 -
每日一题 第二次考试第4,5,6题
@TOC编写一个函数判断一个正整数是不是“快乐数”。“快乐数”是一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程,如果数字变成了1,这个数就是快乐数,如果无限循环始终变不到1,这个数就不是快乐数。# 如果是快乐数,那么只需要不断地循环生成total(各位数的和),直到total=1 ,return True# 重点是解决不是快乐数的情况,此时各位数的平方和永远都不等于1,所以要用一个集合,每次计算出一个平方和要检查集合里是否有相同的数字,如果有,不是快乐数,return Fa原创 2021-04-26 21:54:59 · 143 阅读 · 0 评论 -
每日一题 约瑟夫问题的多种解法 (第二次考试第二题)
约瑟夫问题的多种解法方法一:直接pop,符合条件时(计数器=m)不管,反之加到列表最后方法二:老师课上方法,所有操作均在原数列中进行方法三 单循环链表,复习数据结构而写方法四:递归方法(稍微难理解一些)方法一:直接pop,符合条件时(计数器=m)不管,反之加到列表最后def ysf(n, m): # 特殊情况 m=1 if m == 1: return n # 其他情况 list1 = list(range(1, n + 1)) # print(l原创 2021-04-26 21:50:37 · 90 阅读 · 0 评论 -
每日一题 递归回顾以及递归解决列表最深嵌套层数问题(第二次考试题目三)
递归知识点总结 及题目解析1.递归知识点介绍及简单实例a.错误示范(递归必须有出口)b.累加问题c.阶乘问题2.斐波那切数列及改进a.一般的菲波那切数列数列的实现b.加了记忆的方法(利用字典储存中间结果)c.利用functools里的装饰器lru_cache 添加记忆3.递归构建二叉树 以及使用递归遍历(数据结构复习)*4. 爬楼梯问题(一次可以走一级,两级或者三级,爬完10个台阶有多少种走法)递归解法非递归解法*5.写一个函数,传入的参数是一个列表(列表中的元素可能也是一个列表),返回传入的列表有多少层嵌原创 2021-04-26 21:34:51 · 502 阅读 · 0 评论 -
每日一题 装饰器问题(第二次考试第一题)
@TOC装饰器:用一个函数去装饰别的函数或类,为其提供横切关注功能。横切关注功能-跟正常的业务逻辑没有必然联系的功能题目一:设计一个装饰器函数,如果被装饰的函数返回字符串则将字符串每个单词首字母大写方法一:使用 字符串.title()from functools import wrapsstr1 = 'this is string example....wow!!!'# 法一:使用 字符串.title()def my_uper(f): @wraps(f) # 是一个带参数的原创 2021-04-26 20:51:11 · 124 阅读 · 0 评论