小白学Java

小白学Java

https://www.wanyj.cn
Java后端
2027
齐鲁理工学院

该用户为会员

会员专享项目教程/ 答疑等服务

开 codex plus 会员有没有卡可以直绑,招商万事达貌似绑不了,需要套一层google play,但是今天这个付款方式貌似没了,想问一下大家开gpt用的什么方式🥺

Day 102(5.6/5.7/5.8) ✅ 今天做了: 1. 力扣136,只出现一次的数字 2. 复习Mysql八股 3. 整理《万能视频总结器》项目开发文档:https://www.codefather.cn/post/2051997576365887489 4. 复习Java八股 5. 编写codefreex项目设计文档 6. 完成codefreex项目基本架构的搭建,基础用户服务,兑换码以及邀请码功能 ⏰ 明天计划: 1. 完成codefreex项目核心AI生成功能 📚 今日感悟: 力扣136,只出现一次的数字 1. 我的思路1:使用set集合,如果当前该数未存在set中,则加入集合,否则将该数从集合中移除,最后set集合中剩余的那个数即为目标值 `时间复杂度O(n),空间复杂度O(n)` 2. 我的思路2:对元素进行排序,然后从前往后进行遍历,如果前一个不等于后一个,这个数就是目标值 `时间复杂度O(nlogn),空间复杂度O(logn)` 3. 思路3:使用位运算,异或运算有如下性质:1)任何数和0做异或,结果仍是原来的数;2)和其自身做异或,结果是0;3)异或运算满足交换律和结合律。运用这三条性质可以将一个初始值为0的数依次与数组中元素进行异或运算,最终的结果就是只出现一次的数字 `时间复杂度O(n),空间复杂度O(1)`

迟来的《万能视频总结器》项目开发路程

邀请你参加 Xiaomi MiMo Orbit 百万亿 Token 创造者激励计划,100T Credits 面向全球用户限时发放中... https://100t.xiaomimimo.com/ 大家快来薅🥰 免费,我弄到了max🤩

Day 101 ✅ 今天做了: 1. 力扣1143,最长公共子序列 2. 复习msyql八股 3. 零代码生成平台项目进度+2(41/41)完结! ⏰ 明天计划: 1. 刷力扣题 2. 复习java八股 3. 编写“零代码平台”设计文档,准备开发 📚 今日感悟: 一、力扣1143,最长公共子序列 1. 我的思路1:动态规划,构造一个二维数组(行列分别是两个字符串的长度+1,默认第0行和第0列填充0方便计算),把这两个字符串当做行和列,如果行元素等于列元素,则选取`dp[i-1][j-1]+1`,否则取`dp[i-1][j]`或者`dp[i][j-1]`中最大长度+1 `时间复杂度O(m*n),空间复杂度O(m*n)` 2. 我的思路2:优化为一维数组,如果行元素等于列元素,`dp[j]=t+1`;否则`dp[j]=max(dp[j-1],dp[j])`(注意,左上角的元素不能通过dp[j]或者dp[j-1]表示,因此要额外维护一个变量用于记录左上角的值dp[j],然后在下一轮使用这个值从而达到左上角的目的) `时间复杂度O(m*n),空间复杂度O(n)`

Day 100 ✅ 今天做了: 1. 力扣5,最长回文子串 2. 复习jvm 3. 零代码生成平台项目进度+2(39/41) ⏰ 明天计划: 1. 刷力扣题 2. 复习mysql八股 3. 学习零代码生成平台项目 📚 今日感悟: 力扣5,最长回文子串 1. 我的思路:暴力,两层for循环进行判断。超时! `时间复杂度O(n*n*n),空间复杂度O(n)` 2. 思路2:动态规划,对于位置i到j,如果`dp[i][j]`是回文串并且`s[i-1]==s[j+1]`,那么`dp[i-1][j+1]`也是回文串。因此维护一个二维数组`dp[i][j]`用于表示位置i到j是否是回文串,外层循环固定子串长度,内层循环计算当前固定长度下的右边界,然后进行`s[i-1]==s[j+1]`的判断即可 `时间复杂度O(n*n),空间复杂度O(n*n)` 3. 思路3:中心拓展算法,如果中心点`dp[i][j]`可以构成回文串,则当`s[i-1]==s[j+1]`时`dp[i-1][j+1]`也可以,依次类推。那么就可以遍历字符串,每轮以i和i,i+1为中点向外拓展,选取两者最长的拓展长度当做本轮的最长长度即可,最后处理起始位置获取字符串即可 `时间复杂度O(n*n),空间复杂度O(1)`

Day 99 ✅ 今天做了: 1. 力扣64,最小路径和 2. 复习redis八股 3. arms监控的使用 4. 零代码生成平台项目进度+7(37/41) ⏰ 明天计划: 1. 刷力扣题 2. 复习jvm 3. 学习零代码生成平台项目 📚 今日感悟: 力扣64,最小路径和 1. 我的思路1:动态规划,使用二维数组记录到达每个网格所需要的最小路径,然后选取上/左方最小的路径加上自己即可(`dp[i][j]=min(dp[i-1][j],dp[i][j-1])+nums[i][j]`) `时间复杂度O(m*n),空间复杂度O(m*n)` 2. 我的思路2:同样也可以优化为一维数组(`dp[j]=min(dp[j],dp[j-1])+nums[i][j]`) `时间复杂度O(m*n),空间复杂度O(n)`

Day 98 ✅ 今天做了: 1. 力扣62,不同路径 2. 复习springboot八股 3. 零代码生成平台项目进度+3(30/41) ⏰ 明天计划: 1. 刷力扣题 2. 复习redis八股 3. 学习零代码生成平台项目 📚 今日感悟: 力扣62,不同路径 1. 我的思路:动态规划,只需要找到目标位置的上方和左边的到达路径即可,而这两个位置又可以继续拆分(`dp[i][j]=dp[i-1][j]+dp[i][j-1]`),因为只能向左/下移动,所以i=0和j=0的行列可以填充为1 `时间复杂度O(m*n),空间复杂度O(m*n)` 2. 思路2:因为仅与`dp[i-1][j]`和`dp[i][j-1]`这来两个位置有关,可以用一维滚动数组代替二维数组(`dp[j]=dp[j]+dp[j-1]`) `时间复杂度O(m*n),空间复杂度O(n)`

Day 97 ✅ 今天做了: 1. 力扣32,最长有效括号 2. 复习java八股 ⏰ 明天计划: 1. 复习springboot 2. 刷力扣题 📚 今日感悟: 力扣32,最长有效括号 1. 思路1:利用栈,记录最后一个不能参与匹配的位置,这样合法长度就可以通过i-栈顶来计算。如果遇到'(',直接入栈;否则弹出一个栈顶元素用于匹配,然后判断栈是否为空,如果不为空,计算i-栈顶元素并更新最大值;如果栈为空,把这个位置当做新的无效边界入栈 `时间复杂度O(n),空间复杂度O(n)` 2. 思路2:使用两个变量记录当前左括号和右括号的数量,正序遍历,当左=右时,计算当前括号长度,左<右时,重置左右都为0;但对于(()这种情况就没法判断了,所以在倒序来一遍,左>右时,左右重置为0 `时间复杂度O(n),空间复杂度O(1)`

Day 96 ✅ 今天做了: 1. 力扣416,分割等和子集 2. 复习Mysql八股 ⏰ 明天计划: 1. 刷力扣题 2. 复习Java八股 📚 今日感悟: 力扣416,分割等和子集 1. 思路:等价于取出某些数,使他们的和为总和的一半。首先如果和为奇数,直接返回false;维护一个数组dp[i],用来表示能否凑出数值为i的数,初始dp[0]=true。填充dp时要倒序,避免同一个元素使用多次 `时间复杂度O(n*mid),空间复杂度O(mid)[mid为数组所有数和的一半]` 2. 思路2:完全背包问题,相当于恰好装满背包 `时间复杂度O(n*mid),空间复杂度O(n*mid)[mid为数组所有数和的一半]`

下载 APP