小黑尝试了跳大绳感觉十分解压,开始安排了工作内容,开始从头学习统计学系方法,健身课接近了尾声,仰山运动跟上了前排的脚步,开了一上午支部会议,受到了有意调侃产生内耗的leetcode之旅:37. 解数独

小黑代码(小黑独立做出困难题,经过了两天的闲暇时间思考,不断修复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自主学习大模型相关内容,同时调研检索大模型

在这里插入图片描述

午餐干饭

在这里插入图片描述
在这里插入图片描述
干饭完毕,无浪费
在这里插入图片描述

午间读书会《红与黑》

在这里插入图片描述

收到了奇怪的短信

在这里插入图片描述

晚餐来两个汉堡,一个普通板烧鸡腿堡,一个麻酱板烧鸡腿堡

在这里插入图片描述
在这里插入图片描述

晚上尽管雾霾,但是仰山也要继续,今天小黑黑是第一名呀

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

晚上喝点儿啤酒吃薯片,享受简单的快乐

在这里插入图片描述

早餐干饭

在这里插入图片描述
干饭完毕,无浪费,准备开一上午的会
在这里插入图片描述

买个咖啡,不小心点成了冰镇的

在这里插入图片描述

午餐干饭

在这里插入图片描述
在这里插入图片描述
干饭完毕,无浪费
在这里插入图片描述

午间读书会《了不起的盖茨比》

在这里插入图片描述

加油小黑,别在意别人的调侃,她们也就是不如你而找个乐子,你是来上班的不是来交朋友的!!减少内耗!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值