![](https://img-blog.csdnimg.cn/13d7d42b7923499a9371ba3f2332d877.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法训练营
文章平均质量分 68
时长两个月得代码随想录算法训练营
小C卷Java
一个菜鸡Java选手
展开
-
代码随想录算法训练营day11_20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值
思路:1.使用栈完成每组括号的匹配2.因为本题括号不会交叉,只能()[]{},降低了难度3.遍历字符串如果是左括号,放入栈,如果是右括号,使用它的左括号和栈顶元素比较是否相等也可以遍历的时候如果遇到左括号,就把对应的右括号放入栈,然后遇到右括号的时候和栈顶元素比较是否相等。原创 2023-05-20 11:00:51 · 40 阅读 · 0 评论 -
代码随想录算法训练营day10_232.用栈实现队列、225. 用队列实现栈
5.如果为空,如果stack1不为空,就使用while循环将stack1中的元素全部放入stack2实现顺序的改变。在实现pop和peek方法的时候,一定要注意先判断stack2还有没有元素,应该被先返回。使用add和remove再失败的时候会抛出异常所以使用offer和poll。1.由于栈的进出原则为LIFO,所以需要连个栈来改变成FIFO。4.首先判断stack2是否为空,如果不为空直接返回。我使用了一个双端队列Deque直接就实现了,很疑惑。2.push方法的实现:直接压入stack1。原创 2023-05-19 20:50:24 · 51 阅读 · 0 评论 -
代码随想录算法训练营day06_ 242.有效的字母异位词 、349. 两个数组的交集 、202. 快乐数 、1. 两数之和
思路:1.首先想到的是用一个来记录每个字母出现的次数2.其次,也可以把数组替换为3.用map来做这道题不能通过containsKey来做,因为字符串长度可能不同。原创 2023-05-15 14:03:58 · 43 阅读 · 0 评论 -
代码随想录算法训练营day02_ 977. 有序数组的平方、209.长度最小的子数组 、59.螺旋矩阵II
在一刷的时候,我的思路是暴力,直接遍历数组,然后将每个数组的元素平方放入新的数组,最后进行排序。:在看到有序数组的条件后,第一时间想到了双指针。因为在有负数的情况下,平方后会变大。原创 2023-05-11 22:23:16 · 196 阅读 · 0 评论 -
代码随想录算法训练营day03_ 203.移除链表元素、707.设计链表、206.反转链表
最基础的链表题,主要是为了教会你用虚拟头节点,我是认为只要是删除类型的题,最好都用虚拟头节点来做。已经刷了太多遍了,惯性了。。。需要注意的问题1.如果不使用头节点可能会造成这种链表少删一个的情况2.注意空指针异常的问题,链表最容易出现空指针异常,主要出现在循环条件里是还是还是,最好是画图来解决。原创 2023-05-12 22:13:16 · 30 阅读 · 0 评论 -
代码随想录算法训练营day01_ 704. 二分查找、27. 移除元素
时间复杂度和空间复杂度是衡量算法效率的两个重要指标。时间复杂度描述了算法运行所需的时间量,而空间复杂度描述了算法运行时所需的内存空间。可以用大O符号来表示,例如O(n)表示算法的时间复杂度与输入规模n成正比。也可以用大O符号来表示。例如,O(1)表示算法所需的额外内存量与输入规模无关,O(n)表示算法所需的额外内存量与输入规模成正比。原创 2023-05-10 15:42:01 · 538 阅读 · 0 评论 -
代码随想录算法训练营day04_ 24. 两两交换链表中的节点 、19.删除链表的倒数第N个节点 、面试题 02.07. 链表相交、 142.环形链表II
首先会考虑用一个虚拟节点来更便捷的操作链表,其次两两交换链表节点,这个过程空想是很复杂的,所以选择了画图,其实链表题都可以画图,画出来自己模拟就很清晰了。使用和来进行基本的交换使用来保存head.next.next节点,避免丢失节点在逻辑理清楚之后一步一步写代码,一遍过。原创 2023-05-14 00:45:17 · 34 阅读 · 0 评论