victory的博客

长安一片月,万户捣衣声

0%

NVIDIAGeForceGTX1650驱动安装

当我们想使用GPU(可以用来加速)来跑深度学习代码前,需要进行显卡驱动安装,我的显卡是NVIDIA GeForce GTX 1650。

需要安装:
1.Cuda
2.CuDNN
下载地址:
Cuda
CuDNN
我的显卡使用的Cuda、CuDNN版本:
1.Cuda-10.1
2.CuDNN-7.6
3.Tensorflow-gpu-1.15.0(可选,在这里我是想用来加速Tensorflow代码的训练)

注意:深度学习框架、python、Cuda、CuDNN版本的对应以及Cuda与自己显卡的兼容性
NVIDIA GeForce GTX 1650驱动安装
版本对应参考资料

290.单词规律

题目描述

给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。
这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。

示例1:
输入: pattern = “abba”, str = “dog cat cat dog”
输出: true

题目链接

思路

1.哈希表
在本题中,我们需要判断字符与字符串之间是否恰好一一对应。即任意一个字符都对应着唯一的字符串,任意一个字符串也只被唯一的一个字符对应。在集合论中,这种关系被称为「双射」。
想要解决本题,我们可以利用哈希表记录每一个字符对应的字符串,以及每一个字符串对应的字符。然后我们枚举每一对字符与字符串的配对过程,不断更新哈希表,如果发生了冲突,则说明给定的输入不满足双射关系。
在实际代码中,我们枚举 pattern 中的每一个字符,利用双指针来均摊线性地找到该字符在 str 中对应的字符串。每次确定一个字符与字符串的组合,我们就检查是否出现冲突,最后我们再检查两字符串是否比较完毕即可。

阅读全文 »

609.在系统中查找重复文件

题目描述

给定一个目录信息列表,包括目录路径,以及该目录中的所有包含内容的文件,您需要找到文件系统中的所有重复文件组的路径。一组重复的文件至少包括二个具有完全相同内容的文件。
输入列表中的单个目录信息字符串的格式如下:
“root/d1/d2/…/dm f1.txt(f1_content) f2.txt(f2_content) … fn.txt(fn_content)”
这意味着有 n 个文件(f1.txt, f2.txt … fn.txt 的内容分别是 f1_content, f2_content … fn_content)在目录 root/d1/d2/…/dm 下。注意:n>=1 且 m>=0。如果 m=0,则表示该目录是根目录。
该输出是重复文件路径组的列表。对于每个组,它包含具有相同内容的文件的所有文件路径。文件路径是具有下列格式的字符串:
“directory_path/file_name.txt”

示例 1:
输入:
[“root/a 1.txt(abcd) 2.txt(efgh)”, “root/c 3.txt(abcd)”, “root/c/d 4.txt(efgh)”, “root 4.txt(efgh)”]
输出:
[[“root/a/2.txt”,”root/c/d/4.txt”,”root/4.txt”],[“root/a/1.txt”,”root/c/3.txt”]]

题目链接

思路

1.哈希表
首先我们通过字符串操作获取目录路径、文件名和文件内容。我们使用哈希映射(HashMap)来寻找重复文件,哈希映射中的键(key)是文件内容,值(value)是存储路径和文件名的列表。
我们遍历每一个文件,并把它加入哈希映射中。在这之后,我们遍历哈希映射,如果一个键对应的值列表的长度大于 1,说明我们找到了重复文件,可以把这个列表加入到答案中。

阅读全文 »

43.字符串相乘

题目描述

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

示例 1:
输入: num1 = “2”, num2 = “3”
输出: “6”

题目链接

思路

1.将num1、num2两个字符串转为整数相乘,然后将结果转为字符串返回
2.使用python内置函数eval()执行num1 * num2表达式,将eval函数返回结果转为字符串返回
3.做加法(详细思路见leetcode题解
4.做乘法(详细思路见leetcode题解

阅读全文 »

22.括号生成

题目描述

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
有效括号组合需满足:左括号必须以正确的顺序闭合。

题目链接

思路

1.暴力法
可以生成所有 2^2n 个 ‘(‘ 和 ‘)’ 字符构成的序列,然后我们检查每一个是否有效即可。
2.回溯法
方法一还有改进的余地:我们可以只在序列仍然保持有效时才添加 ‘(‘ or ‘)’,而不是像 方法一 那样每次添加。我们可以通过跟踪到目前为止放置的左括号和右括号的数目来做到这一点,
如果左括号数量不大于 n,我们可以放一个左括号。如果右括号数量小于左括号的数量,我们可以放一个右括号。
3.按括号序列的长度递归

阅读全文 »

itertools.product()

使用product()前需要导入itertools库
用法1:

print(list(itertools.product(‘a', repeat=4)))   # 等价于 print(list(itertools.product('a', 'a', 'a', 'a')))

a = ['a', 'b', 'c']
print(list(itertools.product(a, repeat=2)))  # s等价于 print(list(itertools.product(a, a)))

用法2:

print(list(itertools.product(a, b)))  # 等价于 print(list((x, y) for x in a for y in b))

17.电话号码的字母组合

题目描述

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

题目链接

思路

1.遍历并组合每一个数字对应的字母列表 –> letterCombinations()
点击这里查看完整解题思路!!!
2.使用内置库 –> letterCombinations1()
3.回溯 –> letterCombinations2()
回溯法和使用内置库思路见leetcode题解

阅读全文 »