零基础备战蓝桥杯python-Day5刷题日记:3,13,20

一些想说的话:

本人情况:是大一上了C语言的课,现在大三从2月17这样才开始准备蓝桥杯。

搜了一下网上没有那种短期可以全程跟的教程,但总结准备比赛过程就是熟悉基础语法,学经典算法,刷题这三个步骤。

搜到川川菜鸟老师的视频和知乎,说可以写成博客记录,我觉着这个想法非常好就开始记录了。看到有人点赞很惊喜,我学的比较粗糙,笔记不能拿来当范文学习,都是一些我自己的所思所想,怕误导大家,特此说明一下。

我的进展:先看了黑马教程的速成课,感觉有些和之前重合,老师讲的很好,但学了两天感觉太慢了,而且不知道要学哪里、掌握哪些语法,就没有继续做学习笔记。而是转来刷题,边刷边学知识点,这两天就学了哈希表,链表。

现在准备先写简单题,我拿到题目要么没想法,要么有想法但是基础不好,编的语法总出错,或者是编出来不全对。但无论如何,我会先尝试自己写,不对就把我的想法喂给AI,让他教我怎么改。如果我的想法行不通,会出经常出现什么超出索引范围,就再看AI的写法,不懂得就一点点问他,最后再自己打一遍。笔记是留着自己看,就写的非常简单。

下面我会尽量记录的详细一点,写下我看的视频和我的理解,但还是会以让自己学习复习为主,所以可能看起来会比较抽象。如果大家有什么建议,想法,或者是我哪里出现了问题,欢迎大家评论留言,让我们一起学习,互相进步吧!

练习一

这种是看b站一个视频的思路写的,这个很好理解。知识点:掌握滑动窗思想

一道算法题理解滑动窗思想!【趣刷Leetcode】 No.3 无重复字符的最长子串_哔哩哔哩_bilibili

注意.pop[0],可以这么写,是因为每次移除第一个位置的字符后,列表的特性会使整体迁移,也就是原本的1位置的字符变成了0位置,所以要想还是不符合while要求的话,还是删除下标索引0的位置的元素。

这种可以理解,还可以用哈希表,会更加简洁

错误案例:

我的错误在于,比如这个例子里,右指针指到最后一个a,左指针在上一个a出现的索引值0的基础上,向右移动一个索引值,这样会导致原本在2位置b处的左指针反而向左移了将重复的元素也包含进来了。

左右索引值再做一个这样的判断“left = max(left, hashtable[s[right]] + 1)”,使左指针不会往回走

练习二

这个题没什么思路,注意特殊情况是要作为条件去考虑

练习三

学会用切片,将字符串,或者列表里的元素通过for历遍取出来

练习四

想尝试自己的想法,使用字典做好配对,如果有匹配的括号,就在列表中删除这一对括号,但是忽略了嵌套顺序的条件,应该使用栈来做

知识点学习——数据结构:栈(stack)

速学数据结构-栈的原理与实现(Python)_哔哩哔哩_bilibili

笔记速看:

栈的中心思想就是后入先出(LIFO),如图:

常见用法

初始化一个栈:stack=[]

入栈:stack.append(元素)

出栈:stack.pop(元素)

检查栈是否为空:is_empty=len(stack)==0

获取栈的大小:stack_size=len(stack)

题目思路分析:

为了使左右括号配对,使用哈希表,通过左括号为键,右括号为值,实现不同类型的左括号和右括号的一一对应

需要按照顺序匹配,最先遇到的左右括号判断

豆包给出为什么用栈的的分析:

括号匹配的规则

在括号匹配问题中,要求每个左括号都必须用相同类型的右括号闭合,并且左括号必须以正确的顺序闭合。例如,在字符串 "([{}])" 中,从左到右看,先出现的左括号 ( 需要最后被匹配,而最后出现的左括号 { 要最先被匹配,也就是需要遵循一种 “后进先出” 的匹配顺序。

栈的操作特点

栈是一种数据结构,它支持两种主要操作:入栈(Push)和出栈(Pop)。入栈操作将元素添加到栈的顶部,出栈操作则移除并返回栈顶元素。这种操作方式天然地遵循了后进先出的原则,即最后进入栈的元素会最先被移除

明天整理一下常用数据结构,总是书写不出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值