编程导航学习打卡话题讨论

学习打卡

6.2w 参与
分享

欢迎参与编程导航学习打卡,坚持每日记录分享自己的学习心得,养成好的学习习惯!

🚀 参与方式:在编程导航平台打卡分享,并且打上 #学习打卡# 标签

📚 可以分享以下内容: 1)这是打卡第几天?如:day 1 2)今天做了什么?进度如何?有哪些感受心得? 3)明天要做什么?有什么计划? 4)其他分享(比如心得感悟,鸡汤)

💪🏻 加油,每天进步一点点,未来的你会感谢现在努力的你!

点击登录,快来和大家讨论吧~
表情
图片
话题
打卡
综合
交流
文章
问答

day2 移除元素[双指针/栈的思维] 26.9.16

## \[数组\] 27\. 移除元素 / Easy / ⚠️ **题目:** ![Image](https://pic.code-nav.cn/post_picture/2093015628683153409/Rqtpae8CNjxvS0eh.webp) **卡点**: 1. 我刚开始的时候没有反应过来这个题目的含义是让不等val的元素替代原有索引位置,所以想了好久没想到解决方法,后面想到了用pop方法删除元素 2. 使用pop过程中我忘记了len返回的是list的长度,而索引是长度减一的 3. 后面学习了题解发现这题可以用两种思路解决,不需要用到list\.pop 1. 栈思维,使用for循环遍历,用后进入的数值替代前面的数字 2. 双指针,单独开个变量代替for循环进行遍历,另一个变量作为索引用于覆盖 **核心套路**: - 栈思维:新元素覆盖旧元素 > 它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的[线性表](https://baike.baidu.com/item/%E7%BA%BF%E6%80%A7%E8%A1%A8/3228081?fromModule=lemma_inlink)。这一端被称为栈顶,相对的,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 > > - 双指针:两变量分别移动 > 双指针顾名思义,就是同时使用两个指针,在序列、链表结构上指向的是位置,在树、图结构中指向的是节点,通过或同向移动,或相向移动来维护、统计信息. > > **代码**: 初始使用pop,while循环 ```Python class Solution(object): def removeElement(self, nums, val): """ :type nums: List[int] :type val: int :rtype: int """ #更改nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素 #考虑下for遍历 #for遍历我不知道怎么和索引结合,我尝试while循环 #使用range其实可以用range循环 #使用了pop方法 k=0 a=0 while a <= len(nums)-1: if nums[a] == val: nums.pop(a) else: k+=1 a+=1 return k ``` for循环,栈思维 ```Python class Solution(object): def removeElement(self, nums, val): """ :type nums: List[int] :type val: int :rtype: int """ #使用栈的思考,能大大简化 k = 0 for a in nums : if a != val: nums[k] = a k +=1 return k ``` While循环,双指针 ```Python class Solution(object): def removeElement(self, nums, val): """ :type nums: List[int] :type val: int :rtype: int """ #本次尝试双指针 a,b = 0,0 #本质上是用一个指针代替了for的功能 while a<len(nums): if nums[a] != val: nums[b]= nums[a] b+=1 a+=1 return b ``` **复杂度**:时间 O\(n\),空间 O\(1\) **二刷记录**: * [ ]

今天学习了: ①Python基础之——四大序列(list、tuple、dict、set)和两大流程控制(条件判断/模式匹配+for/while循环) ②Python函数之——函数的定义、调用以及五大类参数设置和传递

🚩Java D15 1、写了三段代码,没有代码提示,只有阿里巴巴代码规范插件 2、"写完"和"写好"代码差距太大 3、Kimi制定了一份52周的学习计划,每天都有具体的代码计划,希望能坚持

day42 今天开始做伙伴匹配系统,目前只完成了前端初始化和主页的导航栏和底部栏的编写。 抢阿里云云服务器没抢到,明天定个闹钟抢。 今天收到最右的笔试了,后天晚上7点。还有约了一个自研电话初试,明天下午2点。用友的全栈工程师笔试和ai面还没有做。感觉9月份笔试面试确实多一些,希望在笔试面试中成长,一次错记住不足的地方并提升。 算法一题,java基础。

day1 二分查找 26.9.15

## \[数组\] 704\. 二分查找 / Easy / ⚠️ **题目:** ![image.png](https://pic.code-nav.cn/post_picture/2093015628683153409/6qOm3jEeQ1nwQeBk.webp) **卡点**: 1. 刚开始不知道什么是时间复杂度 > - O\(1\):极快。无论多少数据,瞬间完成。比如:`print(nums[0])`(只要数组非空,访问第一个元素)。 > > - O\(log n\):非常快。每次操作都能排除一半的数据。比如:你正在写的二分查找。 > > - O\(n\):一般。数据量有多大,就要操作多少次。比如:`for i in range(len(nums)):` 遍历数组。 > > - O\(n log n\):稍慢。通常是高效排序算法(如快速排序、归并排序)的复杂度。 > > - O\(n²\):很慢。通常是双重循环嵌套。数据量 100 就要操作 10000 次。比如:`for i in nums: for j in nums:` > > 2. 知道要怎么二分后卡在了不知道怎么判断结束循环,后面确实想到一种解答\(通过elif验证以退出循环\)但不够简洁 3. 在明白后关注到return就是一个函数的结束标志,不需要考虑太多,循环内但凡触发了return语句循环自动结束了 **核心套路**: - 定义区间为 \[left, right\](左闭右闭),则 while 用 left \<= right - 每次 middle = left \+ \(right \- left\) // 2,避免溢出(C/Java 里更要注意) - 如果 nums\[middle\] \> target,说明目标在左半,right = middle \- 1 - 如果 nums\[middle\] \< target,目标在右半,left = middle \+ 1 - 退出循环后没找到,返回 \-1 **代码**: ```Python class Solution(object): def search(self, nums, target): """ :type nums: List[int] :type target: int :rtype: int """ left,right = 0,len(nums)-1 middle = left + right while left <=right: middle = (left + right)//2 if nums[middle] == target: return middle #注意在函数中出现了return则代表着这个函数结束了输出了对应的值 elif nums[middle] < target: left = middle+1 elif nums[middle] > target: right = middle-1 return -1 ``` **复杂度**:时间 O\(log n\),空间 O\(1\) **二刷记录**: * [ ]

Day 12 🧭行动:这次学习了匿名函数与变量定义 🤓体会:这两种方法都能提高代码的可读性与可维护性,在特定情况都有很大作用 🧑‍💻代码: #变量定义-指定类型注解 # abc: int = 915 # score1: float= 95.5 # hobby2: str = "python" # result: bool = True # cba: None = None # # english: list[str] = ["A","B","C"] # phones: set[str] = {"13818286739","13390875673","19161398706"} # options: dict[str,int] = {"count":34,"total":12} # goods: tuple[str,int,int] = ("水果",2,6) #匿名函数 add = lambda x,y: x+y print(add(100,200)) # 需求3:完成如下列表的排序操作,按照每一个元素的字符个数,从小到大排序; data_list = ["C++", "C", "Python", "Jack", "PHP", "Java", "Go", "JavaScript", "Rust"] print(data_list) data_list.sort(key = lambda item: len(item)) print(data_list)

Day 14 ✅ 今天做了:前端Vue终于学完了 ⏰ 明天计划:就差Linux部署和Docker了, 争取今天看完

day41 今天自己修改了一下简历,用作投AI应用开发岗位,还不是很完善,先用老鱼简历做一个简单的。后年用AI优化了一下。 今天主要是对AI超级智能体的总结还有简历优化,后续继续学新项目,我觉得写项目是学知识的最佳途径,相比于死板板的理论,实践起来,记忆更佳。但是基础的还是要看,不然跟着写项目都写不明白。 算法一题,Java基础。 用友有一个笔试邀约,9月第一个笔试。其他的投完简历的都还没回信,科大讯飞的第二次投递还没回信。加油!

🚩Java D14 1、今天看了try-catch-finally和函数式编程,lamda有点类似Swift中的闭包,还没彻底理解,似懂非懂 2、五座山头刷题,靠理解的话,得分50,靠答题规则记忆,得分95,总体还是似懂非懂 3、看书《Head First设计模式》(第二版)的工厂设计模式和代理设计模式(李文华的视频提到了两种设计模式,就顺便有岔路去看了,以免天天被五座山头逼疯了)

今天学了Python基础之: ①数据类型和变量:五大数据类型以及变量常量 ②字符串与编码:字符编码以及Python中的字符串、编解码、格式化

下载 APP