记录自学编程,以谷歌微软金融机构为职位导向的学习过程。自我敦促导向。间断的自学过python的基本语句,for循环之类,以此为起点。
2022/9/20 2
发现一个nlp课题组有机会进入学习,决定希望进组,在进组希望破灭以前以nlp方向论文开题导向。我计划学nlp入门的顺序是西瓜书机器学习,深度学习圣经,之后是论文阅读。
力扣
【手把手带你刷力扣】【力扣算法】【二分查找法】视频配套代码文本 - 哔哩哔哩
从零开始学Python - 知乎
2022/8/21
leetcode开刷python,配合b站视频
从零开始学Python - 第005课:分支结构 - 知乎
语法易错点
注意for循环语句后加:
else:
循环结束最后一句后面什么也不用加
数组里的值按个循环只需要for num in nums:
两者取大可以不用比较用 result = max(result,count)
第一道题连刷带总结,看懂后重复比较快,不行就一句一句重复,但是必须以理解复现的部分为重复动手单元。
拼错result rersult
数组
2022/8/22 1
易错点
for i in range(index, len(nums)):
range
nums打成num
用数组下标循环可以
for i in range(len(nums)-1,-1,-1):
发现一篇整理好的笔记。
Leetcode升级之路(数据结构更新完毕)增加C++版本ing_unspoken0714的博客-CSDN博客时间复杂度常见的时间复杂度O(1):执行常数次,和输入无关def O1(num):i = numj = num*2return i+jO(N):def ON(num):total = 0for i in range(num):total+=ireturn totalO(logN):def OlogN(num); i = 1 while(i < num): i = i*2return iO(M+N)def OMN(https://blog.csdn.net/unspoken0714/article/details/110286517链表的顺序主要搞next指针,删除就让等于.next.next
203
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def removeElements(self, head: ListNode, val: int) -> ListNode:
dummy = ListNode(0)
dummy.next = head
temp = dummy
while(temp.next):
if(temp.next.val ==val):
temp.next = temp.next.next
else:
temp = temp.next
return dummy.next
2022/8/23 2
链表创建deque
linkedlist = deque()
查找元素
index = linkedlist.index(99)
# 2
# 变删除边遍历
while len(queue) !=0:
temp = queue.popleft()
print(temp)
https://leetcode.cn/problems/number-of-recent-calls/submissions/
易错点
定义队列:
# 创建队列
# 该方法为双端队列
queue = deque()
self.q =deque
不是queue
大于号需要两段空格 > 3000
添加一个元素
self.q.append(t)
不用等于号
# 向末尾添加
stack.append(1)
# 获取即将stack的元素 O(1)
temp1 = stack[-1]
# 创建stack
stack = []
# 删除即将出stack的元素 O(1)
# 会返回元素
temp = stack.pop()
l练习题
【手把手带你刷力扣】【数据结构】【栈】代码文本 - 哔哩哔哩
2022/8/24 3
昨天看GitHub - jackfrued/Python-100-Days: Python - 100天从新手到大师
配套配套视频在day2讲hello word
今天看int(input(‘a1 = ’))
496易错点:
对于nextmax = -1和isfound = True这种循环里的赋值要放到循环里面写在for下面
可以用数组或字典map创建
2022/8/25 4
今天看leetcode三道例题,知乎github100链接从零开始学Python - 第005课:分支结构 - 知乎
力扣217
易错点:for的势力范围在与for并排的指令,想让for循环结束后如果没有true就返回false要并排写!
class Solution:
def findTheDifference(self, s: str, t: str) -> str:
class Solution:
def findTheDifference(self, s: str, t: str) -> str:
mapping = {}
for i in s:
if i not in mapping:
mapping[i] = 1
else:
mapping[i]+=1
for i in t:
if i not in mapping or mapping[i] is 0:
return i
else:
mapping[i]-=1
return "a"
“a”什么意思?
return list(Counter(t) - Counter(s))[0]
主要作用:检查某一个元素是否存在
有没有重复元素
添加是:s = set()
s.add(2)
github100day分支结构005if else
比如我们设计一个游戏,游戏第一关的通关条件是玩家获得1000分,那么在完成本局游戏后,我们要根据玩家得到分数来决定究竟是进入第二关,还是告诉玩家“Game Over”,这里就会产生两个分支,而且这两个分支只有一个会被执行。类似的场景还有很多,我们将这种结构称之为“分支结构”或“选择结构”。
006课 循环结构 for while
https://zhuanlan.zhihu.com/p/123384479
2022/8/27 6
昨天去了姥姥家,没干活。
今天联系set 217力扣
练习705力扣
def contains(self, key: int) -> bool:
return bool(self.hashset[key])
从零开始学Python - 第008课:函数和模块 - 知乎
之后的数据结构内容和饲养员视频重复,跳过看(明天)
从零开始学Python - 第016课:面向对象编程入门 - 知乎
2022/8/28 7
取出数组里最大的第k个元素 215力扣
heap = []
heapq.heapify(heap)
for num in nums:
heapq.heappush(heap, num*-1)
while k > 1:
heap.heappop(heap)
k = k-1
return heap.heappop(heap)*-1
取最小堆开头结尾都要*-1
无向图
有向图
权重图
入度:多少边指向该顶点
出度:多少边从这个点指向别的顶点
各种数据结构:增删查改
从零开始学Python - 第019课:使用PyCharm开发Python应用程序 - 知乎
快慢双指针,对撞双指针
141panduan环形链表
class Solution:
def hasCycle(self, head: Optional[ListNode]) -> bool:
if head is None:
return False
slow = head
fast = head
while fast is not None and fast.next is not None:
fast = fast.next.next
slow = slow.next
if fast == slow:
return True
return False
head is None
循环条件没有用while 误用if
881 救生艇https://leetcode.cn/problems/boats-to-save-people/submissions/
用对撞指针要排序
people.sort()
2022/8/30
一般适用场景是有序数组中查找指定元素。
【手把手带你刷力扣】【力扣算法】【二分查找法】视频配套代码文本 - 哔哩哔哩
看书跳读,理解没有看视频深刻,克服困难,连续阅读
从零开始学Python - 第026课:用Python处理图像 - 知乎
class Solution:
def search(self, nums: List[int], target: int) -> int:
s = 0
b = len(nums) - 1
while s <= b:
m = s + (b - s) // 2
if nums[m] < target:
s = m + 1
elif nums[m] == target:
return m
elif nums[m] > target:
b = m - 1
return -1
二分查找m的取法 m = left + (right - left)// 2
m处值大于 target的时候
right = m - 1 否则超时
力扣 704
力扣 35
未找到的值应该插入的位置就是最后循环的s处。
寻找峰值力扣162
凡是非左吉友的题目都可以用二分法查找,时间复杂度logN
class Solution:
def findPeakElement(self, nums: List[int]) -> int:
l = 0
r = len(nums) - 1
while l < r:
m = l + (r - l)//2
if nums[m] > nums[m+1]:
r = m
else:
l = m+1
return l
数组二分查找https://leetcode.cn/problems/search-a-2d-matrix/
滑动窗口
2022/8/31 3
字符串的循环范围是0,k k,len(s)
class Solution:
def maxVowels(self, s: str, k: int) -> int:
res = 0
i = 0
count = 0
hashset = set(['a','e','i','o','u'])
for i in range(0,k):
if s[i] in hashset:
count += 1
res = max(res,count)
for i in range(k,len(s)):
out = s[i-k]
inc = s[i]
if out in hashset:
count -= 1
if inc in hashset:
count += 1
res = max(res,count)
return res
https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length/submissions/
python可以处理文件发邮件 爬虫 from 100Days前十五天
关键字符是 self.函数名(n-1)
class Solution:
def fib(self, n: int) -> int:
if n < 2:
return 0 if n ==0 else 1
m = self.fib(n-1)+self.fib(n -2)
return m
翻转链表力扣
class Solution:
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
if not head or not head.next:
return head
p = self.reverseList(head.next)
head.next.next = head
head.next = None
return p
翻转字符串 344 力扣
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
self.recursion(s, 0, len(s)-1 )
def recursion(self, s, left, right):
if left >= right:
return
self.recursion(s,left+1, right-1)
s[left], s[right] = s[right], s[left]
2022/9/2 5
169力扣
class Solution:
def majorityElement(self, nums: List[int]) -> int:
counts = collections.Counter(nums)
return max(counts.keys(), key=counts.get)
509力扣
dp = [0]*(n+1)
dp[0] = 0
dp[1] = 1
for i in range(2,n+1):
dp[i] = dp[i-1] + dp[i-2]
return dp[n]
62路径数力扣
class Solution:
def uniquePaths(self, m: int, n: int) -> int:
dp = [[0]*n for i in range (m)]
dp[0][0] = 1
for i in range(m):
for j in range(n):
if (i-1 >=0 and i-1=0 and j-1
2022/9/3 6
今天周六,刷爱学习的饲养员视频已经刷到最后一天了,今天就可以看完手把手带你刷leetcode其余算法部分。复习回顾以后,开刷热门推荐里的100道题。加深理解内核很重要。
2022/9/20
在b站发现up致敬大神,她有完整学习的b站视频收藏夹,是学习nlp的途径。