- 博客(111)
- 收藏
- 关注

原创 斯坦福21秋季:实用机器学习-李沐课程笔记
课程主页B站视频PS:李老师dbq,我尽量将您截的图好看些1、ML工作流程及相应难点2、四类职位难怪叫做数据科学家~3、课程重点总结
2021-12-20 15:27:03
1271

原创 Leetcode|Python 刷题
一、题目:两数之和二、解题1、暴力遍历:两个for循环2、思考:两数之和,知道了和target,遍历一遍的时候,又知道加数的其中一个value,就可以反减出另一个加数,同时利用词典的特性【hash算法,可以快速的检查某个键值存在与否。】,快速定位另一个加数的位置。详细可看:力扣官方题解在的话,即,已排除了重复同一个数相加的情况,因为这个时候,该数本身还不在词典中。不在的话,就普通遍历一遍,加入词典即可。第二个方法其实也算是用空间换时间了。...
2021-12-19 22:23:14
992
原创 2.1 Vision-Language Pre-Training for Multimodal Aspect-Based Sentiment Analysis
ACL 2022:南京理工大学。
2022-11-17 21:40:00
1712
原创 ArtFlow: Unbiased Image Style Transfer via Reversible Neural Flows
Jie An, Siyu Huang等:CVPR 2021:罗切斯特大学、百度研究院、腾讯AI实验室、腾讯数据平台。
2022-11-09 11:28:42
1316
原创 672.灯泡开关2|数学推理|6个周期|影响开关
*已知:**按钮1影响所有(周期为1)、按钮2影响偶数(周期为2)、按钮3影响奇数(周期为2)、按钮4影响(1、4、7)【倍数3余1】(周期为3)的灯泡。2、暴力想法,不考虑重复结果:按 presses 次,每次有 4 种选择,那么一共有 4^presses 种按动选择。presses为1时(示例给出了答案),n
2022-09-16 13:14:52
500
原创 857.雇佣K名工人的最低成本|贪心|优先队列|困难|公式转换
贪心:先将所有小的性价比员工放进来(卷的员工,质量高、钱要的还少),然后枚举以每一个能成为工资组中权重(性价比)最大的工人(固定一个变量,剔除质量太高的)来计算最小工资组开销,然后取其中的最小即可。“当固定了某K个工人为一组时,工人k1的质量q1作分子,质量和totalq作分母,再乘以总的发的工资totalw,就是他能拿到的工资w1”,这个w1必须大于等于他期望的工资,才是合理的分组。“对工资组中的每名工人,应当按其工作质量与同组其他工人的工作质量的比例来支付工资。
2022-09-14 14:47:51
171
原创 1592.重新排列单词间的空格
遍历一遍,统计空格数量count和单词数量word;然后将单词用【count//(word-1)】个空格拼接,在加上【count%(word-1)】个剩余的空格。
2022-09-08 15:22:39
117
原创 283.移动零
一下子没想出来,模拟下了计算机的步骤。如下:class Solution: def moveZeroes(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ i = 0 # i表示遍历到j处时,包含的非0数的数量 j = 0 # 遍历 nlen = len(n.
2022-04-09 21:03:25
185
原创 3.6. softmax回归的从零开始实现|简洁实现
from tkinter.tix import Y_REGIONfrom turtle import updatefrom pyparsing import numsimport torchfrom IPython import displayfrom d2l import torch as d2l# 下载数据集到内存batch_size = 256train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)# 1、初始
2022-04-03 17:06:02
1987
原创 279.完全平方数|四平方定理|动态规划
想不出来,看解析的思路写的动态规划:class Solution: def numSquares(self, n: int) -> int: # 动态规划 # dp[i]指i这个数化作完全平方数的和的个数 # 动态规划就是要利用好前面已经计算的数的结果,假设前面的数的结果都计算好了。 # 在前面某个数[1, i-1]上能不能跳一步到现在的数i,跳一步:只加一个数j的完全平方数到达i。 # 那能使得跳一步的这..
2022-04-03 14:43:14
460
原创 240.搜索二维矩阵II|Z字搜索|从斜对角开始|每次可排除一行或一列
这个方法虽然能过,但太笨了,就不解释了。T^Tclass Solution: def searchMatrix(self, matrix: List[List[int]], target: int) -> bool: row = len(matrix) col = len(matrix[0]) if target < matrix[0][0] or target > matrix[row-1][col-1]: ...
2022-04-02 21:19:45
367
原创 3.5 fashion-MNIST图像分类数据集
import torchimport torchvisionfrom torch.utils import datafrom torchvision import transformsfrom d2l import torch as d2l# 用SVG格式画图d2l.use_svg_display()# 1、读取数据集# 通过框架中的内置函数将Fashion-MNIST数据集下载# 通过ToTensor实例将图像数据从PIL类型变换成32位浮点数格式,# 并除以255使得所有像素的数
2022-04-01 20:29:16
709
原创 239.滑动窗口最大值|堆|优先队列|单调递减的双向队列
一、最小堆堆真是个好数据结构,可惜不熟。class Solution: def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]: # 如果窗口大小为1,滑动窗口最大值就是自身 if k == 1: return nums # 一、错误思路 # firstMax = [nums[0], 0] # 记录窗口中第一大的数值和其下标 .
2022-04-01 16:19:59
542
原创 238.除自身以外数组的乘积|两次遍历:左边累乘*右边累乘
常数级别的空间复杂度、O(n)时间复杂度、不用除法除法-》一开始就乘1遍历两遍,1、计算当前数左边的乘积 2、计算当前数右边的乘积 3、累乘class Solution: def productExceptSelf(self, nums: List[int]) -> List[int]: # nlen = len(nums) res = [1] * nlen tmp = 1 # 遍历两遍 ..
2022-03-31 17:34:09
161
原创 3.2&3.3 线性回归的从零开始实现|Pytorch简洁实现
学习链接:李沐老师的动手深度学习v2书、视频链接代码部分的理解笔记。1、生成数据2、读取数据集3、初始化模型参数4、定义模型5、定义损失函数6、定义优化算法7、训练import randomimport torchfrom d2l import torch as d2l# 1、生成数据# 根据给定参数,生成带噪音的训练数据集def synthetic_data(w, b, num_examples): X = torch.normal(mean=0, std=1,
2022-03-30 21:59:05
1754
原创 236.二叉树的最近公共祖先|递归
递归递的脑壳痛。参考链接:236. 二叉树的最近公共祖先(DFS ,清晰图解)# 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,..
2022-03-30 15:35:30
687
原创 234.回文链表|快慢指针|链表反转
看了官方解题思路,然后自己写的代码。1、找到链表的中间结点,此时slow指向奇数链的中间结点,偶数链的中间的右边结点2、翻转后边的链表,此时slow指向第二部分子链翻转后的头结点3、对比head和slow指向的链表即可# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.nex.
2022-03-29 17:49:11
714
原创 226.翻转二叉树|递归
想到了之前的一道题,判断是不是对称二叉树101.对称二叉树|递归。逻辑应该类似。递归着一直将根结点的左右两棵树调换。用具体的树模拟一遍就勤洗了# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.rig.
2022-03-28 17:27:23
797
原创 221.最大正方形|动态规划
动态规划自个儿写的,支棱.jpg。开始只知道动态规划,然后是具体动手模拟一遍,初始状态、转移方程就自然而然出来了。class Solution: def maximalSquare(self, matrix: List[List[str]]) -> int: # 动态规划 # dp[i][j] 存的是以当前位置为【最大正方形的右下角】,这个正方形的边长。 # maxlen 存最大正方形的边长 row, col = l...
2022-03-27 16:38:21
256
原创 215.数组中的第K大最大元素|快排|堆排
暴力,这肯定不是面试出题者的意图class Solution: def findKthLargest(self, nums: List[int], k: int) -> int: # nums = list(set(nums)) # 去重 nums.sort(reverse=True) # 排序 print(nums) return nums[k-1]快排class Solution: def findK..
2022-03-26 15:36:59
639
原创 208.实现Trie(前缀树)
此前我都不是很了解这个概念。和我一样的可以看看这个链接Trie Tree 的实现 (适合初学者)🌳总结链接:1、结点:2、Trie例子class Trie: def __init__(self): self.children = dict() self.isEnd = False def insert(self, word: str) -> None: curnode = self for ch in.
2022-03-25 16:14:09
422
原创 207.课程表|拓扑排序|判断有向图是否有环|深度遍历|广度遍历
读题:已知边,判断该有向图是否有环。参考链接:「图解」拓扑排序 | 课程表问题把一个 有向无环图 转成 线性的排序 就叫 拓扑排序BDF 广度遍历1、根据pre得indegree入度数组、adject邻接表2、queue保存入度为0的结点(即没有前提课程的课程)3、根据queue减少相邻结点的入度(根据adject邻接表),减到0后入队列;4、队列空了后,还有入度不为0的课程(即numCourse!=0)就返回False。class Solution: def canFin.
2022-03-21 20:24:24
265
原创 206.反转链表|迭代|递归
迭代# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def reverseList(self, head: ListNode) -> ListNode: if not head : ret..
2022-03-20 21:08:58
381
原创 200.岛屿数量|DFS
深度遍历class Solution: def numIslands(self, grid: List[List[str]]) -> int: count = 0 self.grid = grid self.row = len(self.grid) self.col = len(self.grid[0]) def dfs(i, j): if not (0 <= i <s..
2022-03-19 17:32:51
238
原创 198.打家劫舍|动态规划|特殊情况
动态规划class Solution: def rob(self, nums: List[int]) -> int: nlen = len(nums) dp = [0] * nlen dp[0] = nums[0] for i in range(1, nlen): if i == 1: dp[i] = max(nums[0], nums[1]) ..
2022-03-19 17:14:10
123
原创 169.多数元素|字典|moore投票计数法
字典记录{数:出现次数}时间复杂度O(n),空间复杂度O(n)class Solution: def majorityElement(self, nums: List[int]) -> int: # nlen = len(nums) dicts = collections.defaultdict(int) res = [] for val in nums: dicts[val] += 1 ..
2022-03-19 16:41:18
194
原创 160.相交链表|双指针走个循环a+b或者b+a
双指针,一个走a+c+b,一个走b+c+a。具体见代码注释# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def getIntersectionNode(self, headA: ListNode, headB: ListNode) -&...
2022-03-19 15:58:16
413
原创 155.最小栈|辅助栈|辅助元组
栈中保存一对元组,以(当前值,当前栈中的最小值)的形式class MinStack: def __init__(self): self.stack = [] def push(self, val: int) -> None: if len(self.stack) == 0:# 空栈 self.stack.append((val, val)) # 栈中最小值就是自身 else: s..
2022-03-19 15:17:11
204
原创 152.乘积最大子数组|动态规划|因为负数的存在,需同时记录最大最小值
动态规划class Solution: def maxProduct(self, nums: List[int]) -> int: nlen = len(nums) dpmax = nums[0] # 记录乘积最大值 dpmin = nums[0] # 记录乘积最小值 res = dpmax # 因为下一个出现的数值是如果是负数,会将最小值变成最大值,所以两个都要记录;res是记录中途中的连续子数组的的最大乘积,代替了dp..
2022-03-18 22:26:31
270
原创 148.排序链表|从下往上的二分归并
分析nlogn的时间复杂度:归并排序、堆排等常数的空间复杂度:递归需要用到栈,不行。那就倒着来,用interval记录需要归并的两子链范围。# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def sort..
2022-03-17 14:14:40
454
原创 146.LRU缓存|字典+双向链表
常数的时间复杂度:用hash字典最久没用的关键字:要记录使用顺序,用队列这里有问题:如果get()取得的是队列中间的关键字,此时要将其移到最后。时间复杂度不会是常数。单链表移动也不会是常数的时间复杂度,要用双向链表。class LRUCache: # 不行的代码 def __init__(self, capacity: int): self.capacity = capacity self.dicts = collections.defaultdict(...
2022-03-17 11:18:11
203
原创 142.环形链表II|快慢指针(相遇:走了n倍环长)+慢慢指针(相遇:走到环入口)
快慢指针# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def detectCycle(self, head: ListNode) -> ListNode: slow = head fast = head..
2022-03-15 17:12:33
162
原创 141.环形链表|快慢指针
我的思路:原地修改结点的next,将其指向自己,以此标记是否遍历过# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def hasCycle(self, head: Optional[ListNode]) -> bool: ...
2022-03-15 16:37:11
428
原创 139.单词拆分|记忆化回溯|动态规划
我的回溯:超时class Solution: def wordBreak(self, s: str, wordDict: List[str]) -> bool: self.wordDict = wordDict self.res = False def backtrack(s): if len(s) == 0: self.res = True if self.res: return ..
2022-03-15 15:58:51
187
原创 136.只出现一次的数字|异或运算|reduce
线性时间复杂度,说明只遍历一遍;如果可以用额外空间,可以用字典计数,然后遍历得到字典中值为1的键。但是如果是这样,题目中又说其余每个元素都出现两次。两次,我刚开始想的是用一正一负抵消,但这样也是需要记录出现次数的呀。学算法,结果相对于过程不那么重要提出用异或,因为异或独特的性质。class Solution: def singleNumber(self, nums: List[int]) -> int: return reduce(lambda x, y :x^y, n.
2022-03-15 15:05:30
105
原创 128.最长连续序列|动态规划|区间两端的key记录区间长度value
class Solution: def longestConsecutive(self, nums: List[int]) -> int: # 动态规划,用字典记录,如果num是区间边界,记录的是包含num在内的连续区间的长度,是中间区间可能就不会更新成它的区间长度,除非它是新加进来的val(后面测试发现,这个也可以随便填个数值,只要标记在字典中就行)。因为如果不是新加进来的val,那么他就是已经在字典中了。 # 以[100,4,200,1,3,2]为例。 .
2022-03-15 14:49:31
185
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人