学习日记day41

Day41_1203

专注时间:3H36min

每日任务:计算机网络50分钟( 0 分钟),搜广推90分钟~上不封顶+手撕目录里的算法( 60+20 ),二刷hot100算法题2道(完成 2 道),刑法实务考试复习50分钟( 57 分钟看完了

学习内容: 如上

总结与心得: 明明睡得早起得晚,学到中午、晚上还是犯困而且确实睡着了。

《41.缺失的第一个正数》天才,自己想出来的。

python 复制代码
class Solution(object):
    def firstMissingPositive(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        #存进set里面 然后从1到len(nums)开始去查set里面有没有这个数字
        occ = set(nums)
        n = len(nums)
        # for 循环遍历列表,逐个添加数字到 set
            #for num in num_list:
            #   num_set.add(num)  # set.add() 方法:添加单个元素,重复元素会自动跳过
        #或者
            # 1. 定义包含数字的列表(可重复、无序)
            #num_list = [1, 2, 3, 2, 4, 5, 1, 6]

            # 2. 直接用 set() 转换(接收列表为可迭代对象)
            #num_set = set(num_list)
        for i in range(1,n+2):
            if i not in occ:
                return i
python 复制代码
class Solution(object):
    def firstMissingPositive(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        n = len(nums)
        for i in range(n):
            if nums[i]<=0:
                nums[i] = n+1
        for i in range(n):
            getnum = abs(nums[i])
            #x<=n的话 在下标x-1处(给这个地方的数做标记)打负号标记
            if getnum<=n:
                nums[getnum-1] = -abs(nums[getnum-1])
        for i in range(n):
            if nums[i]>0:
                return i+1

        #如果里面没有正数,就return n+1
        return n+1

《73.矩阵置零》

python 复制代码
class Solution(object):
    def setZeroes(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: None Do not return anything, modify matrix in-place instead.
        """
        #非原地:o(n^2) 每个行 每个列 如果读到0就标记为True。 然后赋值
        r = len(matrix)
        c = len(matrix[0])
        row = [False]*r
        col = [False]*c
        for i in range(r):
            for j in range(c):
                if matrix[i][j]==0:
                    row[i]=True
                    col[j]=True
        for i in range(r):
            if row[i]==True:
                for j in range(c):
                    matrix[i][j] = 0
        for j in range(c):
            if col[j]==True:
                for i in range(r):
                    matrix[i][j] = 0
        
python 复制代码
class Solution(object):
    def setZeroes(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: None Do not return anything, modify matrix in-place instead.
        """
        #非原地:o(n^2) 每个行 每个列 如果读到0就标记为True。 然后赋值
        #现在原地的话,需要在原地设置一个哈希数组,实现和非原地一样的效果。那么可以考虑第一行第一列
        r = len(matrix)
        c = len(matrix[0])
        rowis0 = False
        colis0 =False
        for i in range(c):
            if matrix[0][i]==0:
                rowis0 = True
        for j in range(r):
            if matrix[j][0]==0:
                colis0 = True

        for i in range(1,r):
            for j in range(1,c):
                if matrix[i][j]==0:
                    matrix[i][0]=0
                    matrix[0][j]=0
        
        for i in range(1,r):
            for j in range(1,c):
                if matrix[i][0]==0 or matrix[0][j]==0:
                    matrix[i][j]=0
        if rowis0 is True:
            for i in range(c):
                matrix[0][i]=0
        if colis0 is True:
            for j in range(r):
                matrix[j][0]=0
        
        

        
相关推荐
光头程序员1 小时前
学习笔记——常识解答之垃圾回收机制
java·笔记·学习
爱吃番茄鼠骗1 小时前
Linux操作系统———线程同步
linux·学习
晨曦5432102 小时前
学习数据分析第一天
学习
FserSuN2 小时前
Agent开发总结学习
人工智能·学习
TL滕2 小时前
从0开始学算法——第六天(进阶排序算法)
笔记·学习·算法·排序算法
TL滕2 小时前
从0开始学算法——第六天(进阶排序算法练习)
笔记·python·学习·算法·排序算法
张望远-长风万里2 小时前
练习实践-win10自带命令工具certutil进行文件校验和生成实践
学习
敲敲了个代码2 小时前
从零实现一个「就地编辑」组件:深入理解 OOP 封装与复用的艺术
前端·javascript·学习·面试·前端框架
YJlio2 小时前
Autologon 学习笔记(9.16):无感登录的正确打开方式(原理、风险与替代方案)
数据库·笔记·学习