小黑代码(小黑独立做出困难题,经过了两天的闲暇时间思考,不断修复bug与debug,虽然代码比较臃肿但是终于出来了,小黑nb,遇到困难不要想着一口气解决,平常心对待慢慢磨它,总有惊喜!)
class Solution:
def solveSudoku(self, board) -> None:
"""
Do not return anything, modify board in-place instead.
"""
# 记录行 列 区域中的数字
map_ = {}
# 初始化map_
for i in range(9):
for j in range(9):
if board[i][j] != '.':
# 行信息更新
set_ = map_.get((i+1)*10, set())
set_.add(board[i][j])
map_[(i+1)*10] = set_
# 列信息更新
set_ = map_.get(j, set())
set_.add(board[i][j])
map_[j] = set_
# 区域信息更新
set_ = map_.get((i//3, j//3), set())
set_.add(board[i][j])
map_[(i//3, j//3)] = set_
self.flag = False
# 结果变量
self.res = ''
# 回溯函数
def dfs():
if self.flag:
return
flag = False
for i in range(9):
for j in range(9):
if i == 8 and j == 8 and board[i][j] != '.':
self.flag = True
return
if board[i][j] != '.':
continue
# print(i, j)
# 可行解集
res = []
for t in range(1, 10):
t = str(t)
if t in map_.get((i+1)*10, set()):
continue
if t in map_.get(j, set()):
continue
if t in map_.get((i//3, j//3), set()):
continue
res.append(t)
#print((i, j), res)
if not res:
return
# print(res)
for r in res:
board[i][j] = r
# 行信息更新
set_ = map_.get((i+1)*10, set())
set_.add(board[i][j])
map_[(i+1)*10] = set_
# 列信息更新
set_ = map_.get(j, set())
set_.add(board[i][j])
map_[j] = set_
# 区域信息更新
set_ = map_.get((i//3, j//3), set())
set_.add(board[i][j])
map_[(i//3, j//3)] = set_
dfs()
if self.flag:
return
map_[(i+1)*10].remove(board[i][j])
map_[j].remove(board[i][j])
map_[(i//3, j//3)].remove(board[i][j])
board[i][j] = '.'
flag = True
if i == 8 and j == 8:
self.flag = True
return
break
if flag:
break
dfs()
回溯法
class Solution:
def solveSudoku(self, board) -> None:
"""
Do not return anything, modify board in-place instead.
"""
# 记录每一行每一列的初始化数字
line = [[False] * 9 for _ in range(9)]
column = [[False] * 9 for _ in range(9)]
block = [[[False] * 9 for _ in range(3)] for _ in range(3)]
pos = []
for i in range(9):
for j in range(9):
if board[i][j] == '.':
pos.append((i, j))
else:
t = int(board[i][j])
# 行、列、区域插入对应元素
line[i][t-1] = True
column[j][t-1] = True
block[i//3][j//3][t-1] = True
self.flag = False
# 开始进行回溯
def dfs(i = 0):
if i == len(pos):
self.flag = True
return
x = pos[i][0]
y = pos[i][1]
for t in range(1, 10):
if not (line[x][t-1] or column[y][t-1] or block[x//3][y//3][t-1]):
# 将t元素加入该位置
board[x][y] = str(t)
line[x][t-1] = True
column[y][t-1] = True
block[x//3][y//3][t-1] = True
# 深度搜索
dfs(i+1)
if self.flag:
return
# 回溯
line[x][t-1] = False
column[y][t-1] = False
block[x//3][y//3][t-1] = False
board[x][y] = '.'
dfs(0)
数据库练习
1068. 产品销售分析 I
# Write your MySQL query statement below
SELECT
product_name, year, price
FROM
Sales LEFT JOIN Product ON Sales.product_id = Product.product_id
Pandas练习
1068. 产品销售分析 I
import pandas as pd
def sales_analysis(sales: pd.DataFrame, product: pd.DataFrame) -> pd.DataFrame:
data = pd.merge(sales, product, how='left', on=['product_id'])
return data[['product_name', 'year', 'price']]
小黑生活
跑步机间歇跑,5组4分钟
早餐干饭
干饭完毕,无浪费
去买咖啡,热美式,不小心洒在了电脑上
没事的时候学习,从《统计学习方法》开始
午餐干饭
干饭完毕,无浪费
午休读书会《格调》
《格调》(美国社会阶层,阶层固化)
1.到底是什么决定了阶层的差异?文化。贫民家庭里,电视总是摆在最显眼的地方,电视上放着塑料花。
2.想人之所想,做人之所做,才能成为他。
3.文化才是阶层分化的关键。最怕没文化,现在开始读书,早晚会变成上层阶级。
4.美国社会氛围上层阶级、中层阶级、下层阶级。你怎么挣的钱,比挣多少都有意义。上层阶级氛围中上层、上层和看不见的顶层。
5.中产阶级稍不留神就会到上层贫民,上层贫民稍微努力就到了中产阶层。全世界最势利的一群人就是中产,有了孩子就会更焦虑。中产阶级在意装点门面的事情,喜欢购物。大多数是乐观主义,寄托于努力,大部分时间都在工作缺乏自由。
6.贫民分为上层贫民(蓝领技术工人)、中层贫民(可替代性较高)、下层贫民(重复体力劳动者)。上层贫民比较体面,中下层比较粗鲁。下层阶级分为赤贫阶级和看不见的底层。
7.上层阶级的标志:脸、苗条身材、牙齿白(牙不算在医保里),中产和穷人不会花时间打扮自己的脸。衣着方面,上层穿戴喜欢多层(衬衫马甲…)。中上层次喜欢穿藏青色服装,颜色越柔,原料高级,大logo。贫民阶层喜欢穿广告体桖。上层和中上层喜欢穿旧衣服,中产和贫民喜欢穿新衣服。
8。住房,美国中产阶级喜欢英国味道东西。上层用硬木地板,客厅为欧洲或中国古风。贫民阶层,电视消耗所有时间。上流社会不怎么注重汽车,中产喜欢买豪车最好赛车,贫民阶层喜欢搞车贴花里胡哨。阶层地位越高,越不喜欢开快车。
9.吃喝(饮料的添堵),美国上等阶层喜欢白葡萄酒气泡酒(甜度少),贫民阶层喜欢喝啤酒果汁。吃饭时间,中上:8点开始吃晚饭,中产:7点到7点半,贫民:6点到6点半(后面还有好多活要干)。吃饭,贫民阶层喜欢吃重口味。休假,贫民阶层最看重周末,中上阶层不太在乎周末,下层喜欢去旅游景点。贫民阶层是观光旅游团主体。
10.运动,美国阶层越往上走球越小(高尔夫球),越往下走球越大(足球、篮球)。
11.大学,越往上走,越重视大学教育。
上层阶层喜欢看管理类型书,中上阶层喜欢看时代周刊,贫民阶层喜欢读文摘。读书鄙视链存在于中产。
12.阶级固化在美国比中国还严重,在中国更有机会改变阶层。不要起格调,要持续进步,丢掉格调。
下午帮忙拉东西
晚餐麻辣烫干饭,垂四网红麻辣烫
马拉松一年比一年强啦,希望自己不要沉迷,违背跑步初衷,我是一名健康跑者啦
来个足疗,过两天就要涨到90了,赶紧做一下,师傅真的很卖力
希望自己能够有机会出去跑跑
麦当劳早餐
买咖啡
通过学习,自主推导第一章的泛化上界
午餐干饭
干饭完毕,无浪费
午休读书会学习《飞奔的物种》
《飞奔的物种》
1.奶牛为什么不能编舞?松鼠为什么不能设计通往树顶的电梯?短嘴鳄为什么不能发明快艇?这是因为,在人类大脑运作的程序中,产生了一种进化调节,这种调节不仅可以使我们认识这个世界,还可以让我们进行假设性的创造。
2.大脑有着重复抑制,以前显而易见的东西,慢慢很难察觉了,熟悉会滋生一种冷漠感。(婚姻、笑话等)笑话之所以好笑,因为笑话跟人的预测违背。我们既不想生活在无限循环中,也不想生活在一直意外之中。
3.动物大都靠着自动行为生存,神经元固定在特定位置。人类大脑容易形成新的神经元路线。
4.创造力是用新观念打破习惯。创造性的思想是进化的。
5.没有什么所谓的灵感,都是努力和准备。创新本身是有框架的。
6.3b法则:扭曲 打破 融合。艺术就是对现实的扭曲。打破使我们能把坚实连续的东西分解成可管理的部分,大脑的破坏设施把世界分解成可以重建或重塑的单位。融合,例如寿司、披萨等,将多个信息源或力量融合在一起,例如古希腊人和牛融合在一起,出了人身牛头怪,埃及人的狮身人面像,鱼和女人美人鱼,蝙蝠侠,蜘蛛侠,蚁人,现实生活中互联网+。
7.创新要有个度,创造力不要跟传统开玩笑比如有历史感的东西,严肃归严肃。如果挑战传统,就要做好大家不买账的准备,站在大众的角度去创新。创新不要给人们带来麻烦。创造力一定要实用,不要为了创新而创新。
晚上小汤3《假日之歌》打卡
倒数第二次健身课,练背
尝尝麻将板烧鸡腿堡,感觉还不错
早上起来发现阿黄在跑步,也勾起了我运动的激情
早餐干饭,今天的馅饼我不爱吃,但是也吃完了
干饭完毕,无浪费
买杯咖啡
学习统计学习方法课程,自主推导极大似然估计
通过kaggle自主学习大模型相关内容,同时调研检索大模型
午餐干饭
干饭完毕,无浪费
午间读书会《红与黑》
收到了奇怪的短信
晚餐来两个汉堡,一个普通板烧鸡腿堡,一个麻酱板烧鸡腿堡
晚上尽管雾霾,但是仰山也要继续,今天小黑黑是第一名呀
晚上喝点儿啤酒吃薯片,享受简单的快乐
早餐干饭
干饭完毕,无浪费,准备开一上午的会
买个咖啡,不小心点成了冰镇的
午餐干饭
干饭完毕,无浪费